Python Pandas数据帧格式索引问题

时间:2018-01-27 07:55:13

标签: python pandas

RangeIndex错误:

使用两个数据源尝试获取数据,quandl和x源(数据获取不是问题,但使用此方法进行逻辑抛出错误)对于quandl没有问题,但对于x源,这个RangeIndex错误来了。

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

需要更改哪些内容才能在数据帧df1

中正确对齐x源
Window.postMessage()

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

我做的一些分析显示如下 列表的差异如下所示,其中df索引日期在线下面第一行(哪个工作正常)如果df1索引并打开低,则关闭所有放置在同一行中的所有错误。

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

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

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

x source out put是df1: (我在这里看到不一样的 Date O H L C 所有这一切都导致了问题)

 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 

如何纠正?使df1数据帧与df interms of index相同,使其看起来相同。

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

    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

1 个答案:

答案 0 :(得分:2)

评论

df.reset_index(inplace=True)

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

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