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)
列的值为r和i。我想按行计算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)
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)
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)