[python笔记]行列转换,数据透视

import pandas as pd
import numpy as np

a0=[['亨利','男','语文',98.],['C罗','男','体育',60.],['亨利','男','数学',60.],['C罗','男','语文',100.]]
af0 = pd.DataFrame(a0,columns=['name','sex','lesson','score'])
# print(af0)
#目标转化成
'''
         score                avg
lesson      体育    数学     语文
name sex
C罗   男    60.0   0.0  100.0  80.0
亨利   男     0.0  60.0   98.0  79.0

'''
#方法1set_index unstack()
af = af0.set_index(['name','sex','lesson'],inplace=False)
af = af.unstack()
af['avg']=af.mean(axis=1,skipna=True)
af[af.isnull()]=0
# print(af)
#方法2 pivot
af2 = af0.pivot(index='name',columns='lesson',values='score')
af2['avg']=af2.mean(axis=1)
af2.fillna(0,inplace=True)
# print(af2)
#方法3pivottable
af3=af0.pivot_table(values='score',index=['name','sex'],columns='lesson',aggfunc=np.mean,margins=True,fill_value=0)
print(af3)
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值