python pandas pivot 行转列

举报
lu_zhishen 发表于 2021/04/04 18:06:05 2021/04/04
【摘要】 原始数据:姓名性别科目分数张三 男  语文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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。