首页 > 解决方案 > 使用多列对 Pandas 数据框进行分组并创建分布

问题描述

我有一个数据框如下:

data = [['A', 1], ['A', 0], ['A', 1], ['B', 0], ['B', 1], ['C', 1], ['C', 1], ['C', 1]]
temp_df = pd.DataFrame(data, columns = ['Name', 'effect'])

    Name    effect
0   A   1
1   A   0
2   A   1
3   B   0
4   B   1
5   C   1
6   C   1
7   C   1

在做了一个 groupby 之后,我得到了

temp_df.groupby(['Name','effect']).size().reset_index(name='count')


Name    effect  count
0   A   0   1
1   A   1   2
2   B   0   1
3   B   1   1
4   C   1   3

但我需要我的结果如下所示:

姓名 e0 e1
一种 1 2
1 1
C 0 3

标签: pythonpandaspandas-groupby

解决方案


您可以使用 交叉制表crosstab()。要添加e到列名,链add_prefix()

pd.crosstab(temp_df.Name, temp_df.effect).add_prefix('e')

# effect  e0  e1
# Name          
# A        1   2
# B        1   1
# C        0   3

推荐阅读