使用两列作为变量的数据框从长到宽

我想使用port1和port2作为感兴趣的变量将以下数据从长到宽重塑


            port1  port2     w_ret

date                              

2006-01-01    0.0    0.0  0.067991

2006-01-01    0.0    1.0  0.033219

2006-01-01    1.0    0.0  0.073324

2006-01-01    1.0    1.0  0.039730

2006-01-02    0.0    0.0  0.033616

2006-01-02    0.0    1.0  0.022452

2006-01-02    1.0    0.0 -0.024854

2006-01-02    1.0    1.0  0.020411

我希望重新排列的数据看起来像这样:


             0.00.0     0.01.0    1.00.0    1.01.0     


date

2006-01-01  0.067991   0.033219  0.073324  0.039730   

2006-01-02  0.033616   0.022452 -0.024854  0.020411

顶部的数字类似于port1和port2数字在一起。我不确定当使用正确的代码时会发生什么。


我unstack()在制作port1和port2索引时尝试过并尝试date使用pivot_table,但没有成功实现此输出。


任何想法都会很棒!


宝慕林4294392
浏览 177回答 1
1回答

胡子哥哥

首先将列连接在一起,然后DataFrame.set_index使用参数append=True并最后通过Series.unstack以下方式重塑:s = df['port1'].astype(str) + df['port2'].astype(str)df = df.set_index(s, append=True)['w_ret'].unstack()print (df)              0.00.0    0.01.0    1.00.0    1.01.0date                                              2006-01-01  0.067991  0.033219  0.073324  0.0397302006-01-02  0.033616  0.022452 -0.024854  0.020411
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python