导航
  • 主页
  • 招聘
  • Python 数据分析三剑客
  • Python 问答

Pandas的DataFrame数据转换

薛定谔之死猫 码窑株式会社 码农  2014-06-27 12:08:59
下列代码中srcdf和desdf都是Pandas的DataFrame对象,需要将srcdf转换为desdf,也就是根据列中的值拓展新的列,关系数据库报表中常见的需求,请问用DataFrame要如何实现?
print(srcdf)
姓名 性别 科目 分数
编号
0 刘玄德 男 语文 98
1 刘玄德 男 数学 60
2 刘玄德 男 体育 50
3 关云长 男 语文 60
4 关云长 男 数学 60
5 关云长 男 体育 100

[6 rows x 4 columns]

print(desdf)
姓名 性别 语文 数学 体育 平均分
编号
0 刘玄德 男 98 60 50 66.666667
1 关云长 男 60 60 100 73.333333

[2 rows x 6 columns]
...全文
18978 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
littlely_ll 2018-06-20
有多个方法,先写下两种: 1
df.set_index(['姓名','性别','科目'])['分数'].unstack().reset_index()
2
df.pivot_table(values="分数", columns="科目", index=['姓名','性别'], 
               margins=True, margins_name='平均数').reset_index()
回复
百事悠弦 2016-05-26
http://blog.csdn.net/zutsoft/article/details/51509124
回复
cyyang 2014-08-20

from pandas import Series,DataFrame
a=[['刘玄德','男','语文',98.],['刘玄德','男','体育',60.],['关云长','男','数学',60.],['关云长','男','语文',100.]]
af=DataFrame(a,columns=['name','sex','course','score'])
af.set_index(['name','sex','course'],inplace='TRUE')
t1=af.unstack(level=2)
t2=t1.mean(axis=1,skipna=True)
t1['平均分']=t2
t1.fillna(0)
回复
ImN1 2014-06-27
这个直接变形有点难,因为语文、数学、体育是不定数据内容,另外平均分肯定要算的 DF可以用SQL,你不如从这个入手解决
回复
发动态
发帖子
脚本语言(Python,Perl 等)
创建于2007-08-27

3.6w+

社区成员

Python,JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
申请成为版主
社区公告

CSDN 脚本语言社区接受专栏投稿(专栏会在顶部创建专属你的栏目),投稿需满足以下要求:

  • 脚本语言技术相关;
  • 文章持续更新,保持活跃;
  • 内容清晰明了,干货为主;
  • 文章排版有序,有条有理。

本社区开通招聘专栏,发布招聘信息请联系版主,发布者需要保证招聘信息真实有效,CSDN 平台和版主不对招聘内容负责!

联系方式:私聊版主、发送邮件、QQ联系等均可: