Pandas 熊猫:使用DatetimeIndex将timeseries列转换为多索引
我有一个时间序列的csv文件/数据帧,如下所示:Pandas 熊猫:使用DatetimeIndex将timeseries列转换为多索引,pandas,time-series,multi-index,reindex,datetimeindex,Pandas,Time Series,Multi Index,Reindex,Datetimeindex,我有一个时间序列的csv文件/数据帧,如下所示: IDX_A IDX_B 1/1/20 1/2/20 1/3/20 A 1 A1_0 A1_1 A1_2 A 2 A2_0 A2_1 A2_2 B 3 B3_0 B3_1 B3_2 B 4 B4_0 B3_1 B3_2 我想转换为第一级为DatetimeIndex的多索引:
IDX_A IDX_B 1/1/20 1/2/20 1/3/20
A 1 A1_0 A1_1 A1_2
A 2 A2_0 A2_1 A2_2
B 3 B3_0 B3_1 B3_2
B 4 B4_0 B3_1 B3_2
我想转换为第一级为DatetimeIndex的多索引:
F1
Date IDX_A IDX_B
1/1/20 A 1 A1_0
2 A2_0
B 3 B3_0
4 B4_0
1/2/20 A 1 A1_1
2 A2_1
B 3 B3_1
4 B3_1
1/3/20 A 1 A1_2
2 A2_2
B 3 B3_2
4 B3_2
我想以前有人问过这个问题,但我只能找到关于单个索引的另一个方向的信息。我将添加额外的功能列并在现有代码中使用,因此这是最适合我的格式,特别是考虑到DatetimeIndex对时间序列有意义。我的方法:
(df.set_index(['IDX_A','IDX_B'])
.rename_axis(columns='Date')
.stack()
.reorder_levels((2,0,1))
.sort_index()
.to_frame(name='F1')
)
或使用melt
:
(df.melt(['IDX_A','IDX_B'], var_name='Date',value_name='F1')
.set_index(['Date','IDX_A','IDX_B'])
)
输出:
F1
Date IDX_A IDX_B
1/1/20 A 1 A1_0
2 A2_0
B 3 B3_0
4 B4_0
1/2/20 A 1 A1_1
2 A2_1
B 3 B3_1
4 B3_1
1/3/20 A 1 A1_2
2 A2_2
B 3 B3_2
4 B3_2
谢谢,熔化工作完美,这和我更复杂的真实数据!我要提醒所有来这里确保csv加载了parse_dates=True的人,当我第一次尝试你的答案时,我已经忘记了这一点。