如何从pandas数据帧中动态选择子集?

时间:2017-10-28 19:12:10

标签: python pandas dataframe

我是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查询获得的,我只是编写了这个示例数据框以进行说明。谢谢你,如果这很明显,请原谅我。

1 个答案:

答案 0 :(得分: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