如果我有一个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]