2017-10-28 19 views
2

私はPythonの初心者です。私はこれをどうやって行うのか分かりませんでした。私はそれを見つけるために何を探すべきかさえ知らない。まず、ここでのコードスニペットであると私はそれ以下を目指してるものを説明します:pandasデータフレームからサブセットを動的に選択する方法は?

import pandas as pd 

mycolumns = ['col1', 'col2', 'col3'] 

df = pd.DataFrame(data=[[**1**,2,3,**1**,5,6],[1,2,3,4,5,6]], 
        columns=['col1_l', 'col2_l', 'col3_l', 'col1_r', 'col2_r', 'col3_r']) 

criteria = list() 
for col in mycolumns : 
    criterion = (df[col + '_l'] == df[col + '_r']) 
    criteria.append(criterion) 

df = df[criteria[0] | criteria[1] | ... | criteria[5]] 

print df 

出力:

col1_l col2_l col3_l col1_r col2_r col3_r 
0  1,  2,  3,  1,  5,  6 

私が欲しいものを満たすデータフレームの行を選択できるようにすることです指定されたすべての基準を満たしていますが、列の数が固定されていないという問題があります。実行ごとに列数が異なる可能性があり、実行するたびに同じ処理を行いたいという問題があります。質問は、私はこの行を書くことができるか、である:

df = df[criteria[0] | criteria[1] | ... | criteria[5]] 

は、データフレームをデータベース超える参加するSQLクエリーから得られたことを覚えておいてください、私はちょうど明確化のため、この例のデータフレームを書きました。これが明白だったらありがとうと私を許してください。

答えて

3

使用np.logical_or.reduce

print (df[np.logical_or.reduce(criteria)]) 
    col1_l col2_l col3_l col1_r col2_r col3_r 
0  1  2  3  1  5  6 
関連する問題