创建一个主列堆叠在每个oth顶部的数据帧

2024-04-20 16:25:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要把开盘价和收盘价叠加在一起,形成一个较长的系列。应该有三列,每列都是股票的名称

我尝试过使用df.stack(),但它会将股票名称堆叠在一起

df=data[['Open', 'Close']]
df

                            Open                   Close
            ABBV    ABMD    ABT     ABBV    ABMD    ABT
Date                        
2013-12-31  52.99   27.47   38.38   52.81   26.74   38.33
2014-01-02  52.12   26.66   38.09   51.98   26.85   38.23
2014-01-03  52.25   26.84   38.37   52.30   27.06   38.64
2014-01-06  52.70   27.23   39.19   50.39   27.30   39.15

Tags: 名称dfclosedatadatestackopen股票
1条回答
网友
1楼 · 发布于 2024-04-20 16:25:46

默认情况下,stack堆叠最后一个索引级别,该级别在您的案例中包含股票的名称。指定其他级别:

df = df.stack(level=0)

df.index.names = ['Date', 'Type']
df = df.reset_index().sort_values(['Date', 'Type'], ascending=[True, False])

结果:

         Date   Type   ABBV   ABMD    ABT
1  2013-12-31   Open  52.99  27.47  38.38
0  2013-12-31  Close  52.81  26.74  38.33
3  2014-01-02   Open  52.12  26.66  38.09
2  2014-01-02  Close  51.98  26.85  38.23
5  2014-01-03   Open  52.25  26.84  38.37
4  2014-01-03  Close  52.30  27.06  38.64
7  2014-01-06   Open  52.70  27.23  39.19
6  2014-01-06  Close  50.39  27.30  39.15

您可以set_index('Date')reset_index(drop=True)重置最左边的索引列。你知道吗

相关问题 更多 >