Pandas loc 给我 keyerror,索引是日期

我有这个包含 EOD 股票价格的数据集


                YAR.OL     NHY.OL  ...      DNB.OL     SBO.OL

date                               ...                       

1986-03-13         NaN        NaN  ...         NaN        NaN

1986-03-14         NaN        NaN  ...         NaN        NaN

1986-03-17         NaN        NaN  ...         NaN        NaN

1986-03-18         NaN        NaN  ...         NaN        NaN

1986-03-19         NaN        NaN  ...         NaN        NaN

...                ...        ...  ...         ...        ...

2020-07-24  377.799988  26.740000  ...  144.500000  51.000000

2020-07-27  381.799988  26.350000  ...  142.199997  50.599998

2020-07-28  382.399994  26.490000  ...  142.000000  50.200001

2020-07-29  377.899994  26.389999  ...  142.100006  50.799999

2020-07-30  372.000000  25.049999  ...  137.149994  49.799999

索引是日期。但是当我尝试做


df.loc[['2020-07-29']]

我收到一条错误消息:KeyError: '2010-07-29'


或者当我这样做时:


df.loc[['2010-06-29']]

我得到KeyError:“[Index(['2010-06-29'], dtype='object', name='date')] 都不在 [index] 中”


我在打印df.index的时候检查了索引,这个值是存在的。


Index([1986-03-13, 1986-03-14, 1986-03-17, 1986-03-18, 1986-03-19, 1986-03-20,

       1986-03-21, 1986-03-24, 1986-03-25, 1986-03-26,

       ...

       2020-07-17, 2020-07-20, 2020-07-21, 2020-07-22, 2020-07-23, 2020-07-24,

       2020-07-27, 2020-07-28, 2020-07-29, 2020-07-30],

      dtype='object', name='date', length=8667)

有谁知道为什么会这样?


胡说叔叔
浏览 114回答 2
2回答

哆啦的时光机

让我们将索引的 dtype 更改为 datetime 以为数据框创建 DateTimeIndex。df.index = pd.to_datetime(df.index)现在,让我们使用df.loc['2010-07-29'].

慕盖茨4494581

尝试这样访问:   df.loc[df['date'] == '2010-06-29']完整示例:import pandas as pdif __name__ == '__main__':    d = {'date': ['2020-08-01', '2020-08-02'], 'test': [3, 4]}    df = pd.DataFrame(data=d)    test = df.loc[df['date'] == '2020-08-01']    print (test)结果:        date  test     0  2020-08-01     3
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python