在 Python 中,即使键存在,编译器也会为 datetimeIndex 函数抛出键错误
Posted
技术标签:
【中文标题】在 Python 中,即使键存在,编译器也会为 datetimeIndex 函数抛出键错误【英文标题】:In Python, the complier throws a Key Error for the datetimeIndex function even though the key is present 【发布时间】:2022-01-23 06:13:44 【问题描述】:所以我正在尝试创建一个每年的标准普尔 500 回报列表,并且我有一个熊猫数据框,其中包含标准普尔指数过去多年的日期和收盘价。 Dates 列的格式为年-月-日,我正在尝试创建一个只有年份的新列。每当我将 datetimeIndex 与参数“Dates”一起使用时,它是数据框列之一,它会引发一个关键错误。有什么提示或建议吗?
代码:
import pandas as pd
import yfinance as yf
import pandas_datareader.data as web
import datetime
df = web.DataReader('^GSPC', 'yahoo', start='1980-1-1', end='2021-1-1')
clear = ['High','Low','Volume', 'Open', 'Close']
df.drop(columns = clear, inplace = True,)
print(df)
df['year'] = pd.DatetimeIndex(df['Date']).year
print(df)
编译器中的数据框:
>>> %Run dff.py
Adj Close
Date
1980-01-02 105.760002
1980-01-03 105.220001
1980-01-04 106.519997
1980-01-07 106.809998
1980-01-08 108.949997
... ...
2020-12-24 3703.060059
2020-12-28 3735.360107
2020-12-29 3727.040039
2020-12-30 3732.040039
2020-12-31 3756.070068
[10340 rows x 1 columns]
错误信息:
Traceback (most recent call last):
File "C:\Users\charlie\AppData\Roaming\Python\Python37\site-packages\pandas\core\indexes\base.py", line 3080, in get_loc
return self._engine.get_loc(casted_key)
File "pandas\_libs\index.pyx", line 70, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\index.pyx", line 101, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\hashtable_class_helper.pxi", line 4554, in pandas._libs.hashtable.PyObjectHashTable.get_item
File "pandas\_libs\hashtable_class_helper.pxi", line 4562, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'Date'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\charlie\Desktop\ISP\dff.py", line 12, in <module>
df['year'] = pd.DatetimeIndex(df['Date']).year
File "C:\Users\charlie\AppData\Roaming\Python\Python37\site-packages\pandas\core\frame.py", line 3024, in __getitem__
indexer = self.columns.get_loc(key)
File "C:\Users\charlie\AppData\Roaming\Python\Python37\site-packages\pandas\core\indexes\base.py", line 3082, in get_loc
raise KeyError(key) from err
KeyError: 'Date'
如果错误无法修复,有没有其他方法可以解决?
【问题讨论】:
【参考方案1】:Date
列是索引,因此您必须通过 df.index
而不是 df['Date']
或 df.Date
来引用它:
试试这个:
df['year'] = pd.DatetimeIndex(df.index).year
【讨论】:
非常感谢它有效!我整天都被困在这个问题上哈哈。只是为了将来,df.index和df['Date']有什么区别?我是 python 新手。df.index
返回数据帧的索引,无论它可能是什么(日期索引、范围索引等),而df['Date']
返回Date
列,仅此而已。如果 df 没有 Date
列,则会抛出错误。
既然你是新来的,请看this page ;)以上是关于在 Python 中,即使键存在,编译器也会为 datetimeIndex 函数抛出键错误的主要内容,如果未能解决你的问题,请参考以下文章
即使不需要模块,Webpack 也会为 node_modules 中的文件提供“模块没有导出的成员...”错误
即使应用程序关闭,Xamarin 也会为数据同步形成后台服务
为啥即使指定了所有值,Spark SQL 也会为字符串列打开可为空?
即使禁用 csrf,Spring Boot 也会为移动请求抛出 403