2017-04-04 99 views
3

我想本質上做一個COUNTIF在熊貓來計算一行中有多少項與第一列中的一個數相匹配。基於列值的熊貓COUNTIF

數據框:

a b c d 
1 2 3 1 
2 3 4 2 
3 5 6 3 

所以我想算成一排實例(B,C,d)匹配這一點。在第1行中,例如它應該是1,因爲只有d匹配a。

我尋覓了不少用於這一點,但迄今只發現了例子,其中的一個共同的號碼(如計算所有的值大於0),而不是基於一個數據幀列。我猜它的某種形式的邏輯是基於列口罩,但df == df.a似乎沒有工作

回答

6

您可以使用eq,您可以通過一個axis參數指定比較的方向,那麼你可以做一行總和來計算匹配值的數量:

df.eq(df.a, axis=0).sum(1) - 1 

#0 1 
#1 1 
#2 1 
#dtype: int64 
3
df.apply(lambda x: (x == x[0]).sum()-1,axis=1)