python - Python pandas:在行中透视DataFrame列
问题描述
我有一个如下的 pandas DataFrame,显示多个科目的学生成绩:
Name Subject Score
0 Tom A 91
1 Tom B 92
2 Tom C 93
3 Bob A 94
4 Bob C 95
5 Ali B 96
6 Ali C 97
请注意,并非每个学生在所有科目中都有分数。我想把它变成这样的 DataFrame:
Name A B C
0 Tom 91 92 93
1 Bob 94 95
2 Ali 96 97
在这个支点中要实现的目标:
- 按“名称”对分数进行分组
- 插入主题列
- 在姓名和科目的交叉空间排列分数
我是 pandas 的新手,但我查看了 DataFrame.pivot_table(),但不幸的是找不到正确的方法。
解决方案
您正确地使用了pivot_table来解决这个问题:
df = df.pivot_table(index='Name', values='Score', columns='Subject') \
.reset_index() \
.rename_axis(None, axis=1)
print(df)
输出:
Name A B C
0 Ali NaN 96.0 97.0
1 Bob 94.0 NaN 95.0
2 Tom 91.0 92.0 93.0
Pivot也适用于这种情况:
df = df.pivot(index='Name', values='Score', columns='Subject') \
.reset_index() \
.rename_axis(None, axis=1)
推荐阅读
- excel - 在 Excel 中通过 VBA 复制和粘贴形状时出现 1004 错误
- html - 更漂亮 - 如何不在一行上制作每个角度属性?
- azure - Helm Chart 迭代创建 pods , Containers , ports , service
- python - 在python中并行导入多个模块(使用多处理)
- amazon-cognito - 无法将认知身份验证添加到 aws 负载均衡器 (ELB)
- html - 我有一个具有相对 css 位置的 800px 宽的网站 - 如何为移动设备缩放它
- shell - 在引号内找到字段分隔符时不要进行字段分隔
- c++ - 使用 date.h 将纪元转换为 UTC 日期格式
- javascript - 从数组中删除元素会创建新的隐藏类吗?
- python - 将位串流写入文件