我有一个数据框,其中包含从 1932 年 2 月 29 日到 2018 年 7 月 31 日每月观察的 25 个投资组合(ME1_BM1、ME1_BM2 等)的时间序列。前四个观察结果如下所示:
ME1_BM1 ME1_BM2 ...
Date
1932-02-29 2.11875 1.28388
1932-03-31 2.18567 1.24275
...
日期列设置为索引。我需要为其他事情准备数据,因此我需要将数据转换为如下所示:
ME1_BM1 1932-02-29 2.11875
1932-03-31 2.18567
...
ME1_BM2 1932-02-29 1.28388
1932-03-31 1.24275
...
无法使其工作。我尝试堆叠数据框,但随后我将日期作为索引,将投资组合作为第二个“变量”。由于我需要指定太多变量,所以我对枢纽一无所获......
请问有人知道怎么做吗?
亲切的问候,杰斯珀。
最佳答案
我认为你需要unstack
对于带有 MultiIndex
的 Series
:
s = df.unstack()
print (s)
Date
ME1_BM1 1932-02-29 2.11875
1932-03-31 2.18567
ME1_BM2 1932-02-29 1.28388
1932-03-31 1.24275
dtype: float64
如果想要 3 列 DataFrame
添加 reset_index
:
df1 = df.unstack().reset_index()
df1.columns = ['portfolio','date','val']
print (df1)
portfolio date val
0 ME1_BM1 1932-02-29 2.11875
1 ME1_BM1 1932-03-31 2.18567
2 ME1_BM2 1932-02-29 1.28388
3 ME1_BM2 1932-03-31 1.24275
关于python - 将时间序列转入面板...python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52888293/