子集pandas数据帧,其中至少有两列为true



如果我有一个pandas数据帧,我想根据三列中是否至少有两列是>具体的价值观,最好的方法是什么?

df = pd.DataFrame({'a': [1, 2, 3, 4, 5], 
'b': [50, 0, 0, 30, 10], 
'c': [0, 1000, 2000, 0, 0]})
a   b     c
0  1  50     0
1  2   0  1000
2  3   0  2000
3  4  30     0
4  5  10     0
df[ (df[['a', 'b', 'c']] > [1, 10, 100]).sum(axis=1) >= 2 ]
a   b     c
1  2   0  1000
2  3   0  2000
3  4  30     0

这将排除您不希望包含的任何列,并将所有所需的值转换为"null",该值将更改为1以按行汇总。因此,您只需指定您希望具有特定阈值的数字,以及您希望从搜索中排除的任何列。

df = pd.DataFrame({
'Column1' : ['A', 'B', 'C', 'D'],
'Column2' : [1, 1, 1, 1],
'Column3' : [1, 2, 2, 1],
'Column4' : [1, 1, 2, 2]
})
df.loc[np.where(df.mask(df.drop(columns = ['Column1']).gt(1)).isna(), 0, 1).sum(axis = 1) >= 2]

相关内容

  • 没有找到相关文章

最新更新