我有一个用户将在运行时提供的列列表。因此,列表可能会发生变化。
我想从DataFrame中删除所有行,这些行在该列列表中为 ALL 列设置了值。我如何在熊猫中有效地做到这一点?最好的方法是简单地迭代,还是有更多的“熊猫”方法呢?
答案 0 :(得分:1)
我认为您可以boolean indexing
使用all
来检查所有True
值:
df = pd.DataFrame({'A':[1,2,3],
'B':[1,5,6],
'C':[1,8,9],
'D':[1,3,5],
'E':[5,3,6],
'F':[7,4,3]})
print (df)
A B C D E F
0 1 1 1 1 5 7
1 2 5 8 3 3 4
2 3 6 9 5 6 3
cols = ['A','B','C']
val = 1
print (df[cols] == val)
A B C
0 True True True
1 False False False
2 False False False
mask = ~(df[cols] == val).all(axis=1)
print (mask)
0 False
1 True
2 True
dtype: bool
print (df[mask])
A B C D E F
1 2 5 8 3 3 4
2 3 6 9 5 6 3