Pandas: 使用 DatetimeIndex 将时间序列列转换为多索引
Pandas: convert timeseries columns to multi-index with DatetimeIndex
我有一个时间序列的 csv file/dataframe,如下所示:
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 file/dataframe,如下所示:
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