【问题标题】:Calendar pivot table pandas keyerror日历数据透视表 pandas keyerror
【发布时间】:2021-03-04 01:25:42
【问题描述】:

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

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

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

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

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

按月/年的数据按指定月份的值总和进行汇总 我正在使用库 pandas 和 calendar 以及函数 .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

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

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

谢谢

【问题讨论】:

    标签: python-3.x pandas calendar pivot-table


    【解决方案1】:

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

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

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

    margins=False

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

    【讨论】:

    • 谢谢,我也要试试这个解决方案。目前我已经创建了另外两列,一列是年份,一列是上面建议的月份
    【解决方案2】:

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

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

    【讨论】:

    • 哦,就这么简单 -.- 好尴尬,我真的是初学者 :) 谢谢你
    • 哦,顺便说一句:你的回答解决了我在创建每月箱线图时遇到的另一个问题 :)
    【解决方案3】:

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

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

    类似

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

    【讨论】:

    • 这不起作用,因为 df['date'] 是一个没有月份或年份属性的系列。您需要先添加dt 访问器。
    • @teepee,我只是在嘲笑我自己,在你发表评论之前我已经修好了!不过谢谢!
    • 哎呀哈哈,很高兴知道。看起来对我来说是一个正确的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 2023-03-23
    • 2016-06-10
    • 2012-05-22
    • 2018-03-31
    • 2017-01-09
    相关资源
    最近更新 更多