首页 > 解决方案 > 如何最终确定 value_counts

问题描述

我已经在我的数据中尝试过价值计数

df = pd.DataFrame({'TYPE':['BOY','GIRL','GIRL','GIRL','BOY','GIRL','BOY'],'GROUP':['A','D','F','D','C','C','E']})

我的结果应该是这样

TYPE  A B C D E F
BOY   1 0 1 0 1 0
GIRL  0 0 1 2 0 1
TOTAL 1 0 2 2 1 1

我能得到什么

A    1
E    1
F    1
C    2
D    2

从我的代码

a = df.GROUP.value_counts(sort=False,ascending=False)

print(a)

标签: pandas

解决方案


使用交叉表来获取频率,并从 Total 列中删除(因为您对此不感兴趣):

columns = ["A","B","C","D","E", "F"]

res = (pd.crosstab(df.TYPE, df.GROUP, margins=True, margins_name='Total')
      .iloc[:,:-1]
      .reindex(columns, axis=1, fill_value=0)
      .rename_axis(None)

         )
 print(res)


GROUP   A   B   C   D   E   F
BOY     1   0   1   0   1   0
GIRL    0   0   1   2   0   1
Total   1   0   2   2   1   1

推荐阅读