如何根据 Pandas 中的条件逐行计算列的值

Ash*_*ama 5 dataframe python-2.7 pandas

我下面有一个 pandas 数据框 df

df = pd.DataFrame({'id':[1,2,3],'v' : ['r','r','i'], 'w' : ['r','r','i'],'x' : ['r','i','i']})
df

id v  w  x
1  r  r  r
2  r  r  i
3  i  i  i
Run Code Online (Sandbox Code Playgroud)

列的值为ri。我想按行计算r和 的出现次数,并i生成另外两个列标题,并将 和 i` 的计数作为每行的值,我期望的最终结果如下rir

id v  w  x r i
1  r  r  r 3 0
2  i  r  r 2 1
3  i  i  i 0 3
Run Code Online (Sandbox Code Playgroud)

Nad*_*ham 4

方法一


In [15]:
def count(df):
    df['i'] = np.sum(df == 'i')
    df['r'] = np.sum(df == 'r')
    return df

In [16]:
df.apply(count, axis = 1)
Out[16]:
    id  v   w   x   i   r
0   1   r   r   r   0   3
1   2   r   r   i   1   2
2   3   i   i   i   3   0
Run Code Online (Sandbox Code Playgroud)

方法2


In [9]:
count = df.apply(lambda x : x.value_counts() , axis = 1)[['i' , 'r']]
count
Out[9]:
    i   r
0   NaN 3
1   1   2
2   3   NaN

In [10]:
pd.concat([df , count.fillna(0)] , axis = 1)
Out[10]:
    id  v   w   x   i   r
0   1   r   r   r   0   3
1   2   r   r   i   1   2
2   3   i   i   i   3   0
Run Code Online (Sandbox Code Playgroud)