我想使用port1和port2作为感兴趣的变量将以下数据从长到宽重塑 port1 port2 w_retdate 2006-01-01 0.0 0.0 0.0679912006-01-01 0.0 1.0 0.0332192006-01-01 1.0 0.0 0.0733242006-01-01 1.0 1.0 0.0397302006-01-02 0.0 0.0 0.0336162006-01-02 0.0 1.0 0.0224522006-01-02 1.0 0.0 -0.0248542006-01-02 1.0 1.0 0.020411我希望重新排列的数据看起来像这样: 0.00.0 0.01.0 1.00.0 1.01.0 date2006-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,但没有成功实现此输出。任何想法都会很棒!
1 回答

胡子哥哥
TA贡献1825条经验 获得超6个赞
首先将列连接在一起,然后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.0
date
2006-01-01 0.067991 0.033219 0.073324 0.039730
2006-01-02 0.033616 0.022452 -0.024854 0.020411
添加回答
举报
0/150
提交
取消