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')