如何查看数据帧两列之间的最大值以及一列中有多少值大于另一列



我需要比较数据帧的两列(a,b(,看看在熊猫中有多少个"a"的值大于"b"。

我已经尝试过这种方式,但我不知道这是否是最佳选择:

def result(y,z):
    if(y > z):
          return True
df_filtered.apply(lambda y: result(y['a'],y['b']), axis = 1)

结果,这向我展示了真假结果的列表,但我需要知道每个结果的数量。

你可以

value_counts

df['a'].gt(df['b']).value_counts()

你需要:

(df['a'] > df['b']).sum()

请考虑以下示例:

df = pd.DataFrame({
    'a':[10,20,30,40],
    'b':[1,200,300,4]
})

输出:

    a   b
0   10  1
1   20  200
2   30  300
3   40  4

然后

 (df['a'] > df['b']).sum()

输出

2

你做对了,只需添加 value_counts(( 以便:

df_filtered.apply(lambda y: result(y['a'],y['b']), axis = 1).value_counts()

更好的是,如果你的函数结果是微不足道的,你可以写:

df.apply(lambda x: x['a']>x['b'], axis=1).value_counts()

最新更新