日历枢轴 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
这肯定行得通,而且它太短了,无法制作新的月份和年份列。
我有一个按天计算的时间序列,所以,像这样
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
这肯定行得通,而且它太短了,无法制作新的月份和年份列。