尝试访问命名索引时抛出KeyError

时间:2017-10-16 04:25:11

标签: python pandas datetime dataframe keyerror

我试图聚合我的分钟&一年中最高温度为2个不同的州。我的数据框中的列是日期,名称,Tmax,Tmin。

但是,当我尝试使用时:

df['Year'], df['Month-Date'] = zip(*df['Date'].apply(lambda x: (x[:4], x[5:])))

它返回键错误

使用df.dtypes返回:

NAME     object
TMAX    float64
TMIN    float64
dtype: object

因此,虽然我的数据框清楚地显示了Date列,但它不在我的列列表中。当我在此之前将索引设置为Date时,没有错误。关于我做错什么的任何想法?

1 个答案:

答案 0 :(得分:0)

您似乎已将Date设置为索引,因此,它自然不会显示为其中一列。您现在可以使用df.index来引用它。

此外,我不建议对datetime数据进行字符串操作。使用访问器并提取所需的日期组件。如果它不是datetime格式,请使用pd.to_datetime并进行转换。

# don't run this line if the index is a DateTimeIndex already
y = pd.to_datetime(df.index, errors='coerce')                            
df['Year'], df['Month-Date'] = y.year, y.month