如何检查列列表中的条件?

时间:2018-10-11 11:50:25

标签: python pandas

我有一个列列表,我只想让col1或col2或col3的行等于1(所有列的条件相同)。

listColumnName=['col1','col2','col3']
myDF[(myDF[listColumnName[0]]==1) | (myDF[listColumnName[1]]==1) | (myDF[listColumnName[2]]==1)]

如果我的列列表很大,最好的方法是什么?

myDF[myDF[listColumnName]==1]

1 个答案:

答案 0 :(得分:2)

您可以将eq==)的按子集列表过滤的所有列与DataFrame.any进行比较-检查每行是否至少有True

myDF = pd.DataFrame({
        'A':list('abcdef'),
        'col1':[4,1,4,5,5,4],
        'col2':[7,8,9,1,2,3],
        'col3':[1,3,5,7,4,0],
        'E':[5,3,6,9,2,4],
        'F':list('aaabbb')
})

print (myDF)
   A  col1  col2  col3  E  F
0  a     4     7     1  5  a
1  b     1     8     3  3  a
2  c     4     9     5  6  a
3  d     5     1     7  9  b
4  e     5     2     4  2  b
5  f     4     3     0  4  b

listColumnName=['col1','col2','col3']
df = myDF[myDF[listColumnName].eq(1).any(axis=1)]
print (df)
   A  col1  col2  col3  E  F
0  a     4     7     1  5  a
1  b     1     8     3  3  a
3  d     5     1     7  9  b

详细信息

print (myDF[listColumnName])
   col1  col2  col3
0     4     7     1
1     1     8     3
2     4     9     5
3     5     1     7
4     5     2     4
5     4     3     0

print (myDF[listColumnName].eq(1))
    col1   col2   col3
0  False  False   True
1   True  False  False
2  False  False  False
3  False   True  False
4  False  False  False
5  False  False  False

print (myDF[listColumnName].eq(1).any(axis=1))
0     True
1     True
2    False
3     True
4    False
5    False
dtype: bool