python - 使用多列对 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 |
解决方案
您可以使用 交叉制表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
推荐阅读
- php - MailChimp Api v1.3 如何将订阅者设置为待处理
- sql-server - Docker-compose MS SQL attach_dbs
- c++ - C++ 数学问题和 5/4*pi vs 5*pi/4
- javascript - 使用 selectAll() 到达特定类
- windows - 将exe的路径设置为批处理脚本中的变量
- django - 如何将上传图像字段添加到 Wagtail?
- regex - 正则表达式 n 在字符串中任意位置出现的字母
- node.js - 无法使用 Vue CLI 3 要求“fs”
- c++ - ROS RVIZ:如何可视化没有固定帧变换的点云
- c - 小型C电子表格程序骨架问题