df
是一系列日期内股票价格的数据框。 df.shape是(367,1709)。行是日期的时间戳,列是股票代码。时间戳的范围为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栏
我尝试了以下内容:
检查是否是导致错误的时间戳,我检查了df ['M50']。ix [ldt_timestamps [200]]。错误是相同的(虽然时间戳不同)。
检查导致错误的股票代码。我尝试过使用其他符号。没错。即使我尝试在“M50”之后出现符号,也没有错误。所以问题就是符号。但这些符号取自数据框的列。
为了进一步理解错误,我尝试了df ['M50']。shape,它返回(0,1709)。当我尝试使用其他股票代码时,这是有趣的becuae,形状总是(367,)
df.T.Head显示以下内容:
<class 'pandas.core.frame.DataFrame'>
Index: 5 entries, 20MICRONS to AANJANEYA
Columns: 367 entries, 2012-04-02 00:00:00 to 2013-09-27 00:00:00
dtypes: float64(367)
写入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
真的在我的智慧结束这个。请求帮助,了解如何仅为一个股票代码找出导致此错误的原因。