Python pandas计算每列中的出现次数

时间:2017-11-20 10:58:11

标签: python pandas

我是熊猫的新手。有人可以帮我计算每列的值的频率。

数据帧:

id|flag1|flag2|flag3|  
---------------------
1 |  1  |   2 |   1 |  
2 |  3  |   1 |   1 |  
3 |  3  |   4 |   4 |  
4 |  4  |   1 |   4 |  
5 |  2  |   3 |   2 |  

我想要像

这样的东西
id|flag1|flag2|flag3|  
---------------------
1 |  1  |   2 |   2 |  
2 |  1  |   1 |   1 |  
3 |  2  |   1 |   0 |  
4 |  1  |   1 |   2 |  

解释 - id 1在flag1中有1个值,在flag2中有2个值,在flag3中有2个值。

有人可以帮助这方面。

1 个答案:

答案 0 :(得分:2)

首先按filter过滤flag列,或删除id列,然后apply函数value_counts,最后将NaN替换为{ {1}}并转发给0 s:

int

或者:

df = df.filter(like='flag').apply(lambda x: x.value_counts()).fillna(0).astype(int)
print (df)
   flag1  flag2  flag3
1      1      2      2
2      1      1      1
3      2      1      0
4      1      1      2

感谢您Bharath提出建议:

df = df.drop('id', 1).apply(lambda x: x.value_counts()).fillna(0).astype(int)
print (df)
   flag1  flag2  flag3
1      1      2      2
2      1      1      1
3      2      1      0
4      1      1      2