簡體   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