提问人:Sterling Butters 提问时间:1/15/2019 更新时间:1/15/2019 访问量:4444
Pandas Dataframe KeyError:“标签 [2019-01-14] 不在 [索引] 中”
Pandas Dataframe KeyError: 'the label [2019-01-14] is not in the [index]'
问:
所以我发誓我遇到了一个错误,但我希望有人能证明我错了。
我可以生成两种不同格式的 Pandas DataFrame,我无法工作的格式是首选的格式,第二种。第一种格式如下所示:
1. open ... 8. split coefficient
date ...
1998-01-02 129.63 ... 1.0
1998-01-05 131.25 ... 1.0
1998-01-06 129.75 ... 1.0
1998-01-07 129.88 ... 1.0
1998-01-08 128.63 ... 1.0
1998-01-09 130.06 ... 1.0
1998-01-12 124.62 ... 1.0
1998-01-13 129.50 ... 1.0
1998-01-14 132.13 ... 1.0
[5292 rows x 8 columns]
我正在尝试选择日期最接近指定日期的行/条目。我使用以下函数执行此操作:
def nearest(items, pivot):
nearest_date = min(items, key=lambda x: abs(dt.strptime(x, '%Y-%m-%d') - dt.strptime(pivot, '%Y-%m-%d')))
return nearest_date
然后正确地从与该条目对应的第四个 cloumn 中获取一个值:
market = (data.loc[nearest(data.index.get_values(), date)]['4. close'])
但是,在第二种格式中,我的 DataFrame 如下所示(使用基于整数的索引):
date ... 8. split coefficient
0 1998-01-02 ... 1.0
1 1998-01-05 ... 1.0
2 1998-01-06 ... 1.0
3 1998-01-07 ... 1.0
4 1998-01-08 ... 1.0
5 1998-01-09 ... 1.0
6 1998-01-12 ... 1.0
7 1998-01-13 ... 1.0
8 1998-01-14 ... 1.0
[5292 rows x 9 columns]
因此,我相应地调整了我的“市场”方程式:
market = (data.loc[nearest(data['date'].values, date)]['4. close'])
并得到这个错误:
KeyError: 'the label [2019-01-14] is not in the [index]'
我尝试了各种疯狂的东西,包括将日期列转换为pd.datetime,但从未遇到过错误。你所看到的就是对我有意义的,这就是为什么它是这篇文章中尝试的解决方案。关于问题可能是什么的任何想法?
答:
1赞
BENY
1/15/2019
#1
然后就回来了reset_index
data.reset_index(inplace=True)
并做
market = (data.loc[nearest(data['date'].values, date)]['4. close'])
评论
0赞
Sterling Butters
1/15/2019
谢谢,我想这不是一个糟糕的临时解决方案
评论