如何在 pandas 中将 m x n 转置为 k x 2 形式的数据帧

how to transpose m x n into k x 2 form dataframe in pandas

我有 m x n 形式的数据框,如下所示。

date1         amt1       date2        amt2
2021-01-02     120      1991-01-02     90
2021-01-03     100      1991-01-03     95
2021-01-04     110      1991-01-04     95
....

有什么方法可以转置为 k x 2 形式的数据框,例如...

date          amt
2021-01-02     120      
2021-01-03     100      
2021-01-04     110      
...
1991-01-02     90
1991-01-03     95
1991-01-04     95
...

这可以通过重塑轻松完成,尽管顺序有点不同:

pd.DataFrame(df.to_numpy().reshape(-1, 2), columns=['date', 'amt'])

输出:

         date  amt
0  2021-01-02  120
1  1991-01-02   90
2  2021-01-03  100
3  1991-01-03   95
4  2021-01-04  110
5  1991-01-04   95

reset_index 然后使用 pd.wide_to long,

df.reset_index(inplace=True)

pd.wide_to_long(df, stubnames=['date', 'amt'], i=['index'], j='id').reset_index(drop=True)



         date  amt
0  2021-01-02  120
1  2021-01-03  100
2  2021-01-04  110
3  1991-01-02   90
4  1991-01-03   95
5  1991-01-04   95