有没有办法计算一行中大于 Pandas 中的 "variable" 值的值的数量?

Is there a way to count the number of values in a row that are greater than a "variable" value in Pandas?

我有两个独立的 DataFrame:

df1:

Col1  Col2  Col3  Col4  Col5
ID1   2     3      5     0
ID2   7     6     11     5
ID3   9    16     20    12

df2:

Col1  ColB 
ID1   2   
ID2   7   
ID3   9    

有没有办法计算df1第一行中有多少个值大于df2中第ColB列第一个值?我需要为每一行计数并将其添加到 df1 的末尾。所以,df1 可以看起来像这样:

df1:

Col1  Col2  Col3  Col4  Col5 COUNT
ID1   2      3      5    0    2
ID2   7      6     11    5    1
ID3   9     16     20   12    3

感谢您的任何建议!

之前的假设是'Col1'是索引。 如果不是,请在命令右侧的 df1/df2 后添加 .set_index('Col1')

您可以使用底层的 numpy 数组:

df1['COUNT'] = (df1.values>df2.values).sum(axis=1)

# if "Col1" is not index
df1['COUNT'] = (df1.set_index('Col1').values>df2.set_index('Col1').values).sum(axis=1)

或:

df1['COUNT'] = df1.gt(df2['ColB'].values[:, None]).sum(axis=1)

# if "Col1" is not index
df1['COUNT'] = df1.set_index('Col1').gt(df2['ColB'].values[:, None]).sum(axis=1)

输出:

      Col2  Col3  Col4  Col5  COUNT
Col1                               
ID1      2     3     5     0      2
ID2      7     6    11     5      1
ID3      9    16    20    12      3

试试这个:

df1 = df1.set_index('Col1')
df1.assign(COUNT = df1.gt(df2.set_index('Col1').squeeze(),axis=0).sum(axis=1))