Pandas Dataframe KeyError:“标签 [2019-01-14] 不在 [索引] 中”

Pandas Dataframe KeyError: 'the label [2019-01-14] is not in the [index]'

提问人:Sterling Butters 提问时间:1/15/2019 更新时间:1/15/2019 访问量:4444

问:

所以我发誓我遇到了一个错误,但我希望有人能证明我错了。

我可以生成两种不同格式的 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,但从未遇到过错误。你所看到的就是对我有意义的,这就是为什么它是这篇文章中尝试的解决方案。关于问题可能是什么的任何想法?

python pandas 日期时间 索引键 错误

评论


答:

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
谢谢,我想这不是一个糟糕的临时解决方案