繁体   English   中英

日历数据透视表熊猫keyerror

[英]Calendar pivot table pandas keyerror

我每天都有一个时间序列的值,所以,像这样

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

'date' 列用作索引并在导入 csv 时进行解析

我想使用熊猫将这些值放入这样的数据透视表中

       2018     2019     2020
------------------------------
jan   50000    32420    21488
feb   48237    38240    98783
mar   51682    21984    21984
apr   49956    14878    14847

其中按月/年的数据按指定月份中所取值的总和聚合我正在使用库熊猫和日历以及函数 .pivot_table

查看他们在本指南中的建议,作者使用这些代码行

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

但我得到的只是“月”的 KeyError,我不知道是什么原因

你能帮我找出原因吗? 这段代码哪里错了? 在 ubuntu 20.04 上使用带有 vscode 的 python 3.8.3 64 位,这个信息有帮助

谢谢

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

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

就像是

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

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

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

这行不通,因为您使用“日期”列作为索引,因此这不会解决您的问题..只需用此替换索引和列

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

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

margins=False

这肯定会起作用,而且它也太短了,无法制作新的月份和年份列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM