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



我有两个分开的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的第一行中有多少个值大于df2ColB列中的第一个值?我需要对每一行进行计数,并将其添加到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))

最新更新