Python将统计每列中的出现次数

2024-10-06 13:35:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚接触熊猫。有人能帮我计算每列值的频率吗。你知道吗

数据帧:

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 |  

说明-标识1在flag1中有1个值,在flag2中有2个值,在flag3中有2个值。你知道吗


Tags: 数据id标识频率个值flag3flag1flag2
1条回答
网友
1楼 · 发布于 2024-10-06 13:35:02

首先按^{}或删除id列只筛选flag列,然后^{}函数^{},最后将NaN替换为0,并强制转换为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

或:

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

谢谢,Bharath的建议:

df = df.filter(like='flag').apply(pd.Series.value_counts()).fillna(0).astype(int)

相关问题 更多 >