python pandas pivot 行转列
【摘要】 原始数据:姓名性别科目分数张三 男 语文9张三 男 数学8张三 男 物理7李四 男 物理6李四 男 英语5李四 男 数学4转换后的数据 姓名 性别 数学 物理 英语 语文0 张三 男 8.0 7.0 NaN 9.01 李四 男 4.0 6.0 5.0 NaN代码如下:import pandas as pddf = pd.r...
原始数据:
姓名 | 性别 | 科目 | 分数 |
张三 | 男 | 语文 | 9 |
张三 | 男 | 数学 | 8 |
张三 | 男 | 物理 | 7 |
李四 | 男 | 物理 | 6 |
李四 | 男 | 英语 | 5 |
李四 | 男 | 数学 | 4 |
转换后的数据
姓名 性别 数学 物理 英语 语文
0 张三 男 8.0 7.0 NaN 9.0
1 李四 男 4.0 6.0 5.0 NaN
代码如下:
import pandas as pd
df = pd.read_excel('test2.xlsx',sheet_name='Sheet1')
a=pd.pivot(df, index=["姓名","性别"], columns=["科目"], values="分数")
print(a.rename_axis(columns=None).reset_index())
示例2:把姓名横向展示,只需要更改pivot的index和columns即可
import pandas as pd
df = pd.read_excel('test2.xlsx',sheet_name='Sheet1')
a=pd.pivot(df, index=["科目","性别"], columns=["姓名"], values="分数")
print(a.rename_axis(columns=None).reset_index())
科目 性别 张三 李四
0 数学 男 8.0 4.0
1 物理 男 7.0 6.0
2 英语 男 NaN 5.0
3 语文 男 9.0 NaN
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)