熊猫计数跨行的值大于不同列中的另一个值

san*_*ndy 2 python numpy rows count pandas

我有一个像这样的熊猫数据框:

        X   a   b   c
        1   1   0   2
        5   4   7   3
        6   7   8   9
Run Code Online (Sandbox Code Playgroud)

我想打印一个名为 'count' 的列,它输出的值数大于第一列中的值(在我的情况下为 'x')。输出应如下所示:

X   a   b   c   Count
1   1   0   2   2
5   4   7   3   1
6   7   8   9   3
Run Code Online (Sandbox Code Playgroud)

我想避免使用 ' lambda 函数' 或 ' for ' 循环或任何类型的循环技术,因为我的数据帧有大量行。我试过这样的事情,但我无法得到我想要的。

df['count']=df [ df.iloc [:,1:] > df.iloc [:,0] ].count(axis=1)
Run Code Online (Sandbox Code Playgroud)

我也试过

numpy.where()
Run Code Online (Sandbox Code Playgroud)

也没有运气。所以任何帮助将不胜感激。我也有 nan 作为我的数据框的一部分。所以当我计算值时,我想忽略它。

提前感谢您的帮助!

WeN*_*Ben 6

您可以将ge(>=) 与sum

df.iloc[:,1:].ge(df.iloc[:,0],axis = 0).sum(axis = 1)
Out[784]: 
0    2
1    1
2    3
dtype: int64
Run Code Online (Sandbox Code Playgroud)

分配回来后

df['Count']=df.iloc[:,1:].ge(df.iloc [:,0],axis=0).sum(axis=1)
df
Out[786]: 
   X  a  b  c  Count
0  1  1  0  2      2
1  5  4  7  3      1
2  6  7  8  9      3
Run Code Online (Sandbox Code Playgroud)