python怎么保存数据框转置结果_python – 如何转置pandas数据帧以交叉制表保存所有值的数据帧...

我们假设我们有这样的数据帧:

df = pd.DataFrame({'key' : ['one', 'two', 'three', 'four'] * 3,

'col' : ['A', 'B', 'C'] * 4,

'val1' : np.random.randn(12),

'val2' : np.random.randn(12),

'val3' : np.random.randn(12)})

key col是唯一的密钥

我想使col值成为拆分列或交叉列表,最后看起来像这样:

第一个天真的方法pd.crosstab(df.key,df.col)在这里工作不好:

此代码pd.crosstab(df.key,df.col,values = df [[‘val1′,’val2′,’val3’]],aggfunc = np.max)无法使用ValueError运行:传递的项目数错误3,安置意味着1

怎么运作?

解决方法:

df = (df.pivot_table(index='key', columns='col', aggfunc=np.max)

.swaplevel(0,1,axis=1)

.sort_index(axis=1))

替代方案是在GroupBy.max之前汇总:

df = (df.groupby(['key', 'col'])

.max()

.unstack()

.swaplevel(0,1,axis=1)

.sort_index(axis=1))

print (df)

col A B C \

val1 val2 val3 val1 val2 val3 val1

key

four -0.225967 0.362041 0.040915 -1.227718 -0.879248 -1.279912 -1.577218

one -0.187167 1.530731 -1.112116 -0.871077 -2.099876 -0.069297 -0.351971

three -0.165375 -0.378049 -0.390724 0.484519 -0.408990 -1.496042 0.590083

two 1.923084 -0.688284 1.702659 -0.159921 0.635245 0.623821 -1.503893

col

val2 val3

key

four -1.135872 0.645371

one 2.347472 0.129252

three 0.402825 0.883710

two -0.132847 0.179476

标签:python,dataframe,pandas,crosstab

来源: https://codeday.me/bug/20190722/1499944.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值