在数据帧上创建多重索引以执行PanelOL

2024-10-03 02:32:22 发布

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

所以我认为这个问题很简单,但是我无法找到答案。我想做的是在股票数据上运行一个专门小组。为此,我导入两个表,一个是股票的周收益率,一个是谷歌趋势的每周搜索频率,并将它们合并到一个“主数据框”中。然后我循环这个操作x次,这样我的“主数据帧”中就有许多不同的股票。看起来像这样:

             Open  Close Ticker  log(weekly returns)  Search Frequency
2016-01-09  34.84  28.04   ACAD                -0.22              25.0
2016-01-16  28.46  23.78   ACAD                -0.18              26.0
2016-01-09  24.49  24.52   ABBB                 0.00              24.0
2016-01-16  24.11  20.69   ABBB                -0.15              26.0

现在,我需要创建一个基于日期和股票代码的多重索引,以便运行回归,但它没有按应有的方式对其进行排序,因此我得到了一个错误:

NotImplementedError: Only 2-level MultiIndex are supported.

当我包括:

^{pr2}$

我得到的只是:

                    Open  Close  log(weekly returns)  Search Frequency
Date       Ticker                                                     
2016-01-09 ACAD    34.84  28.04                -0.22              25.0
2016-01-16 ACAD    28.46  23.78                -0.18              26.0
2016-01-23 ACAD    24.49  24.52                 0.00              24.0
2016-01-30 ACAD    24.11  20.69                -0.15              26.0

dataframe的变化/外观与以前不同,尽管如果我交换“Date”和“Ticker”,它确实创建了一个类似于此的多重索引,但这无助于我执行回归(我也尝试过使用索引交换层(0,1),但它只返回上表):

                    Open  Close  log(weekly returns)  Search Frequency
Ticker Date                                                           
ACAD   2016-01-09  34.84  28.04                -0.22              25.0
       2016-01-16  28.46  23.78                -0.18              26.0
       2016-01-23  24.49  24.52                 0.00              24.0
       2016-01-30  24.11  20.69                -0.15              26.0

无论如何,最终产品应如下所示:

                    Open  Close  log(weekly returns)  Search Frequency
Date       Ticker                                                     
2016-01-09 ACAD    34.84  28.04                -0.22              25.0
           ABBB    10.21  11.05                -0.18              26.0
2016-01-16 ACAD    24.49  24.52                 0.00              24.0
           ABBB    11.05  15.07                -0.15              26.0

如果需要,我也会发布完整的代码,但是有很多代码与问题无关,我不想包括不必要的代码。由于我能够创建一个多重索引(只是顺序错误),我想有一个我没有看到的简单解决方案。我使用的是python2.7和pandas 18.1


Tags: 数据代码logclosesearchdate错误open
1条回答
网友
1楼 · 发布于 2024-10-03 02:32:22

df.info()

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 4 entries, 2016-01-09 to 2016-01-16
Data columns (total 5 columns):
Open                   4 non-null float64
Close                  4 non-null float64
Ticker                 4 non-null object
log(weekly returns)    4 non-null float64
Search Frequency       4 non-null int64
dtypes: float64(3), int64(1), object(1)
memory usage: 192.0+ bytes

             Open  Close Ticker  log(weekly returns)  Search Frequency
2016-01-09  34.84  28.04   ACAD                -0.22                25
2016-01-16  28.46  23.78   ACAD                -0.18                26
2016-01-09  24.49  24.52   ABBB                 0.00                24
2016-01-16  24.11  20.69   ABBB                -0.15                26

使用

^{pr2}$

生产

                    Open  Close  log(weekly returns)  Search Frequency
Date       Ticker                                                     
2016-01-09 ABBB    24.49  24.52                 0.00                24
           ACAD    34.84  28.04                -0.22                25
2016-01-16 ABBB    24.11  20.69                -0.15                26
           ACAD    28.46  23.78                -0.18                26

相关问题 更多 >