Python 熊猫数据帧格式索引问题



RangeIndex error:

使用两个数据源尝试获取数据,quandl 和 x 源(数据获取不是问题,但将其用于逻辑会引发错误)对于 quandl 没有问题,但对于 x 源,这个 RangeIndex 错误来了。

我觉得这是因为不正确的索引问题。

数据帧 df1 中 x 源的正确对齐需要更改的内容

df=quandl.get("{0}".format(Ticker),start_date="2014-01-01", end_date="2018-01-26")
print(df.head(30))
df1 = get_history(symbol="{0}".format(Ticker),
start=dt.date(2015,1,1), 
end=dt.date(2018,1,19))
df.reset_index(inplace=True)
print(df.head(30))
month_index =df.index.to_period('M')

错误: month_index =df.index.to_period("M") 属性错误:"范围索引"对象没有属性"to_period" 在处理上述异常期间,发生了另一个异常:

我所做的一些分析显示以下内容 列表的差异如下所示,其中 df 索引日期在第一行下方一行(工作正常),如果 df1 索引和低开关闭所有放置在同一行中抛出错误的内容。

下面给出了输出示例,以便快速查看

quandl 输出为 df :(工作时没有错误)

Date       Open     High      Low     Last    Close  Total Trade Quantity  
2017-12-14  1005.25  1015.00   999.30  1012.30  1013.10             3011786.0   
2017-12-15  1013.00  1026.40  1011.85  1019.00  1022.90             5192067.0   
2017-12-18  1011.90  1030.70  1005.80  1014.00  1016.60             2017724.0   
2017-12-19  1017.45  1017.95   999.55  1006.65  1003.95             3559449.0   
2017-12-20  1005.10  1018.60  1001.00  1016.35  1015.85             2093163.0   
2017-12-21  1014.80  1028.95   998.40  1021.50  1022.05             5529581.0 

x 源输出输出是 df1: (我在这里看到差异日期 O H L C都在一行中,这导致了问题)

Date Symbol Series  Prev Close     Open     High      Low     Last
728  2017-12-08   INFY     EQ      999.80  1001.00  1007.00   995.00   999.40   
729  2017-12-11   INFY     EQ     1001.85   994.95  1006.90   993.95  1005.40   
730  2017-12-12   INFY     EQ     1005.30  1002.00  1014.00  1002.00  1010.50   
731  2017-12-13   INFY     EQ     1010.50  1010.90  1019.00   997.65  1005.00   
732  2017-12-14   INFY     EQ     1003.75  1005.25  1015.00   999.30  1012.30   
733  2017-12-15   INFY     EQ     1013.10  1013.00  1026.40  1011.85  1019.00

如何纠正这一点? 使 df1 数据帧与 df 在索引方面相同,看起来是一样的。

编辑到原始帖子并更新: 从 df=quandl.get 如果我打印month_index以下是结果,我怀疑 df1=get_history 没有返回相同的结果,因此出现错误。还有其他方法可以打通吗?

PeriodIndex(['2014-01', '2014-01', '2014-01', '2014-01', '2014-01', '2014-01',
'2014-01', '2014-01', '2014-01', '2014-01',
...
'2018-01', '2018-01', '2018-01', '2018-01', '2018-01', '2018-01',
'2018-01', '2018-01', '2018-01', '2018-01'],
dtype='period[M]', name='Date', length=1006, freq='M')

注释掉

df.reset_index(inplace=True)

发生这种情况是因为索引的类型为string。将索引转换为datetime类型,然后对其应用操作。

df.index = pd.to_datetime(df.index)
month_index = df.index.to_period('M')

最新更新