日历枢轴 table pandas keyerror

Calendar pivot table pandas keyerror

我有一个按天计算的时间序列,所以,像这样

date          value
2020-01-01    50000
2020-01-02    50130
...
2020-10-18    48763

“日期”列用作索引并在导入 csv 时进行解析

我想像这样使用 pandas

将这些值放入枢轴 table
       2018     2019     2020
------------------------------
jan   50000    32420    21488
feb   48237    38240    98783
mar   51682    21984    21984
apr   49956    14878    14847

其中 month/year 的数据按指定月份所取值的总和进行汇总 我正在使用库 pandas 和日历以及函数 .pivot_table

查看他们在 this guide 中的建议,作者使用了这些代码行

import calendar
all_month_year_df = pd.pivot_table(df, values="Open",
                               index=["month"],
                               columns=["year"],
                               fill_value=0,
                               margins=True)
named_index = [[calendar.month_abbr[i] if isinstance(i, int) else i for i in 
list(all_month_year_df.index)]] # name months
all_month_year_df = all_month_year_df.set_index(named_index)
all_month_year_df

但我得到的只是 'month' 的 KeyError,我不知道是什么原因

你能帮我弄清楚为什么吗?这段代码哪里错了? 在 ubuntu 20.04 上使用 python 3.8.3 64 位和 vscode 这个信息有帮助

谢谢

您的输入数据框只有两列,数据和值。

您需要为月份和年份输入两列。

类似

df['month'] = df['date'].dt.month
df['year'] = df['date'].dt.year

问题是您还没有月份或年份列(您只有日期列),因此您需要先根据日期列创建列,如下所示:

df['month'] = df.date.dt.month
df['year'] = df.date.dt.year

这不会起作用,因为您使用 'Date' 列作为索引,所以这不会解决您的问题。 只需用这个替换索引和列

index=[df.index.month], columns=[df.index.year]

并且由于您尚未清理数据集,请使用

margins=False

这肯定行得通,而且它太短了,无法制作新的月份和年份列。