Pandas数据帧,.ix

2024-05-23 14:23:40 发布

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

df是一个日期范围内股票价格的数据框架。数据框形状行是日期的时间戳,列是股票符号。时间戳的范围为2012年4月2日至2013年9月27日。在

我运行for循环如下:

 ldt_timestamps=df.index
 symbols = df.columns
 for sym in symbols:
    for i in range(1, len(ldt_timestamps)) # looping from 2nd row to calculate ratio of today's price and yesterdays price
        f_symprice_today = df[sym].ix[ldt_timestamps[i]]

问题是循环遇到一个错误'KeyError-Timestamp:2012-04-03 00:00:00。我跟踪了这个错误,发现它发生在循环到达一个特定的股票代码列-“M50”时。这是第891纵队

我试过以下方法:

  1. 检查是否是时间戳导致了错误,我检查了df['M50'].ix[ldt_timestamps[200]]。错误是相同的(尽管时间戳不同)。

  2. 检查导致错误的股票代码。我试着用其他符号。没有错误。即使我尝试过“M50”之后出现的符号,也没有错误。所以问题是符号。但是符号是从数据帧的列中提取的。

  3. 为了进一步理解这个错误,我尝试了df['M50'].shape,它返回(01709)。这很有趣,因为当我尝试用其他股票符号时,形状总是(367,)

df.T.Head显示以下内容:

^{pr2}$

写入csv的df如下所示:

date      20MICRONS 3IINFOTECH  3MINDIA A2ZMES  AANJANEYA   AARTIDRUGS
4/2/2012    83.85   16.15   3761.25 116.75  560.7   104.4
4/3/2012    83.75   16.1    3997.65 125.95  553 103
4/4/2012    81.75   16.05   3992.3  122.55  552.25  104.55
4/9/2012    81.55   15.7    4176.45 118.05  522.2   103.65
4/10/2012   83.05   15.75   4234.1  118.85  523.8   105.5
4/11/2012   81.75   15.85   4238.6  115.95  510.9   108.2
4/12/2012   81.6    15.9    4371.75 114.5   529 109.9
4/13/2012   81.85   15.5    4403.4  112.55  514.7   112.1
4/16/2012   80.7    15.5    4449.65 112.95  509.9   111.9

在这件事上我真是束手无策。请求帮助,如何找出是什么导致了这一错误,只有一个股票代码。在


Tags: 数据indffor错误时间符号股票