熊猫数据框检查一行中的多列中是否存在值

时间:2019-11-20 19:56:02

标签: python pandas

我要打印多于一列的值为“ True”的行。

例如,如果数据帧如下:

   Remove  Ignore  Repair
0    True   False   False
1   False    True    True
2   False    True   False

我要打印:

1

是否有一种优雅的方法来代替if语句呢?

3 个答案:

答案 0 :(得分:2)

  • 您可以使用sum并通过axis = 1对列进行求和。
import pandas as pd
df = pd.DataFrame({'a':[False, True, False],'b':[False, True, False], 'c':[True, False, False,]})
print(df)
print("Ans: ",df[(df.sum(axis=1)>1)].index.tolist())

输出:

      a       b      c
0   False   False   True
1   True    True    False
2   False   False   False
Ans: [1]

答案 1 :(得分:1)

您可以对布尔值求和,因为它们将被解释为True = 1,False = 0:

df.sum(axis=1) > 1

因此要过滤到结果为True的行:

df.loc[df.sum(axis=1) > 1]

还是同一件事,但是对于将布尔值转换为整数更明确:

df.loc[df.astype(int).sum(axis=1) > 1]

答案 2 :(得分:1)

要获得符合条件的第一行:

df.index[df.sum(axis=1).gt(1)][0]

输出:

Out[14]: 1

由于可以获得多个匹配项,因此可以排除[0]以获得符合条件的所有行