如何从熊猫数据框中动态选择一个子集?

问题描述:

我是新来的python,我想做这个特殊的任务,这对我来说似乎并不明显。我甚至不知道要搜索什么才能找到它。首先这里是代码片段,我会解释我的目标在它下面:如何从熊猫数据框中动态选择一个子集?

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查询在数据库中获得的,我只是写了澄清这个例子中数据帧。谢谢你,如果这很明显,请原谅我。

使用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