按一列分组,然后根据另一列划分计数

时间:2020-03-19 14:29:05

标签: pandas group-by pivot

我有一个像这样的数据框:

ID    Category
1        A
1        B
1        A
1        B
2        A
2        C
2        C
2        A
2        D
3        E

如何对ID列进行分组,并对每个类别进行计数?

IE。

ID    A   B   C   D  E
1     2   2   0   0  0
2     2   0   2   1  0
3     0   0   0   0  1

我尝试过df.groupby('ID').count()df.groupby('ID')['Category']

1 个答案:

答案 0 :(得分:2)

这可以通过groupby来完成:

df.groupby('ID')['Category'].value_counts().unstack(fill_value=0)

crosstab(代码较短,但速度较慢)

pd.crosstab(df.ID, df.Category)

输出:

Category  A  B  C  D  E
ID                     
1         2  2  0  0  0
2         2  0  2  1  0
3         0  0  0  0  1