将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
但我需要我的结果如下所示:
| 姓名 | 0 | e1 |
|---|---|---|
| 一种 | 1 | 2 |
| 乙 | 1 | 1 |
| C | 0 | 3 |
回答
您可以使用 交叉制表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