pandas 数据框中的分组周期数据

Group periodic data in pandas dataframe

我有一个 pandas 数据框,如下所示:

idx A B
01/01/01 00:00:01 5 2
01/01/01 00:00:02 4 5
01/01/01 00:00:03 5 4
02/01/01 00:00:01 3 8
02/01/01 00:00:02 7 4
02/01/01 00:00:03 1 3

我想根据数据的周期性对数据进行分组,这样最终的数据帧是:

new_idx 01/01/01 02/01/01 old_column
00:00:01 5 3 A
00:00:02 4 7 A
00:00:03 5 1 A
00:00:01 2 8 B
00:00:02 5 4 B
00:00:03 4 3 B

当第一个数据帧变大(更多的列、更多的周期和更多的样本)时,有没有办法解决这个问题?

一种方法是melt DataFrame,然后将日期时间拆分为日期和时间;最后 pivot 最终输出的结果 DataFrame:

df = df.melt('idx', var_name='old_column')
df[['date','new_idx']] = df['idx'].str.split(expand=True)
out = df.pivot(['new_idx','old_column'], 'date', 'value').reset_index().rename_axis(columns=[None]).sort_values(by='old_column')

输出

    new_idx old_column  01/01/01  02/01/01
0  00:00:01          A         5         3
2  00:00:02          A         4         7
4  00:00:03          A         5         1
1  00:00:01          B         2         8
3  00:00:02          B         5         4
5  00:00:03          B         4         3