我要打印多于一列的值为“ True”的行。
例如,如果数据帧如下:
Remove Ignore Repair
0 True False False
1 False True True
2 False True False
我要打印:
1
是否有一种优雅的方法来代替if语句呢?
答案 0 :(得分:2)
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]
以获得符合条件的所有行