范围索引错误:
使用两个数据源尝试获取数据,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')
Run Code Online (Sandbox Code Playgroud)
Error: month_index =df.index.to_period('M') AttributeError: 'RangeIndex' object has no attribute '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
Run Code Online (Sandbox Code Playgroud)
x 源输出是 df1 :( 我在这里看到了不同之处Date OHLC all in a row 这是导致问题的原因)
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
Run Code Online (Sandbox Code Playgroud)
如何纠正这个?使 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')
Run Code Online (Sandbox Code Playgroud)
注释掉
df.reset_index(inplace=True)
Run Code Online (Sandbox Code Playgroud)
这是因为索引的类型为string。将索引转换为datetime类型,然后对其应用操作。
df.index = pd.to_datetime(df.index)
month_index = df.index.to_period('M')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10243 次 |
| 最近记录: |