質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.32%

  • Python

    9249questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • pandas

    677questions

    Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

python で条件抽出

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 972

hiroway

score 3

独学で python や pandas を使ってロト7を予想しています。
当選番号と予想番号の答え合わせをしたいと思っています
その当選と予想の的中する条件抽出で悩んでおります。

df1 は 当選番号のdf(第196回)

df1
  N_1 N_2 N_3 N_4 N_5 N_6 N_7
0  06  08  10  12  16  21  28

df2 は 第196回を予想した数字のdf
行数は30〜50ほど

df2
  N_1 N_2 N_3 N_4 N_5 N_6 N_7
0  04  10  14  21  28  30  35
1  04  10  14  21  28  30  33
2  04  10  14  21  28  30  34
3  04  10  14  21  28  32  35
4  04  10  14  21  28  32  33
5  04  10  14  21  28  32  34
6  04  10  14  21  28  31  35
7  04  10  14  21  28  31  33
8  04  10  14  21  28  31  34
9  04  10  14  21  27  30  35
:   :   :   :   :   :   :   : 
27 02  13  15  24  30  32  35
28 02  13  15  24  30  32  33
29 02  13  15  24  30  32  34
30 02  13  15  24  30  31  35
31 02  13  15  24  30  31  33
32 02  13  15  24  30  31  34


この場合10、21、28が的中しています
この df2 から 当たっている数字が残るdfを
抽出したいのですが...
どのように抽出すればいいか悩んでおります。
↓のような条件はためしたのですが、この場合column1つ分しか
抽出できず、、、

win_df = df2[(df2["N_1"] == df1["N_1"].values[0])|
            ((df2["N_2"] == df1["N_1"].values[0])|
             (df2["N_3"] == df1["N_1"].values[0])|
             (df2["N_4"] == df1["N_1"].values[0])|
             (df2["N_5"] == df1["N_1"].values[0])|
             (df2["N_6"] == df1["N_1"].values[0])|
             (df2["N_7"] == df1["N_1"].values[0]))]

抽出できれば 1個当たったdfや 3個当たったdfなど
dfの中身をみたいとおもっております。
どなたか わかる方 ご教授願います

まだまだ初心者なので、質問の内容が
わかりづらい部分もあるかもしれません。

使用しているのは
mac
Python 2.7.9
pandas

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

set関数を使うと、論理積を使うことが出来ます。
予想した数字のアルゴリズムがわからないので、乱数で代用しています。

import numpy as np
import pandas as pd

columns = ['N_1', 'N_2', 'N_3', 'N_4', 'N_5', 'N_6', 'N_7']
df1 = pd.DataFrame(['06', '08', '10', '12', '16', '21', '28']).T
df1.columns = columns

np.random.seed(1)
df2 = pd.DataFrame(np.random.randint(1, 99,(30,7)))
df2 = df2.applymap(lambda x: '{:02d}'.format(x))
df2.columns = columns

df2.apply(lambda x: set(x) & set(df1.loc[0]), axis=1)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/15 20:55

    driller様 
    ご回答ありがとうございます!

    試してみました! 
    df1やdf2は 元のデータを使ったので
    教えていただいた

    df2.apply(lambda x: set(x) & set(df1.loc[0]), axis=1)

    この1行で抽出できるとは!感動です!

    set関数というものがあるのですね!
    こちらの関数も教えて頂きありがとうございます!
    一昨日からいろいろ検索して探してましたが、こんな短時間で
    解決していただくとは ほんと助かりました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.32%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Python

    9249questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • pandas

    677questions

    Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。