Python 中的 KeyError - 存在的列

问题描述 投票:0回答:1

我正在尝试获取 4 个指数的平均值(列:每周美国 2 号柴油零售价格(每加仑美元)),使用 Python 和以下代码从网站上留下最新的前 2 个日期并获取 KeyError

将 pandas 导入为 pd

df = pd.read_excel('https://www.eia.gov/petroleum/gasdiesel/xls/psw18vwall.xls', sheet_name='Data 1', skiprows=2)

df['日期'] = pd.to_datetime(df['日期'])

df.set_index('日期', inplace=True)

#输入 input_date = pd.to_datetime(input('请输入日期 (YYYY-MM-DD): '))

最近的前 2 个日期

日期 = df.index[df.index

<= input_date][-3:-1]

计算选定日期的“每周美国 2 号柴油零售价格(美元/加仑)”列的平均值

average_prices = df.loc[dates, 1].mean()

结果

print('平均价格:', average_prices)

  • 也试过以下:
平均值 = [] 对于 preceding_dates 中的日期: four_weeks = filtered_df[(filtered_df['Date'] >= date - pd.Timedelta(weeks=4)) & (filtered_df['Date']

< date)] average = four_weeks['Weekly U.S. No 2 Diesel Retail Prices (Dollars per Gallon)'].mean() averages.append(average)

但仍然出现同样的错误

- 有人能帮我避免这个 KeyError 吗。

python indexing jupyter keyerror
1个回答
0
投票
可能会出现 KeyError,因为列名称“每周美国 2 号柴油零售价格(每加仑美元)”未被 pandas 识别。

您可以尝试使用

print(df.columns)

打印出列名以确认列名是否正确。列名称中可能存在您没有注意到的拼写错误。
如果列名正确,您可以尝试使用其索引而不是其名称来访问该列。例如,如果“每周美国 2 号柴油零售价格(每加仑美元)”是数据框中的第二列,您可以使用 
df.iloc[:,1]
 而不是 
df['Weekly U.S. No 2 Diesel Retail Prices (Dollars per Gallon)']
 访问它。

此外,请确保输入的日期在数据框中的日期范围内,以避免在根据日期选择行时出错。

© www.soinside.com 2019 - 2024. All rights reserved.