【问题标题】:Pandas Error when creating a pivot table (KeyError)创建数据透视表时出现 Pandas 错误 (KeyError)
【发布时间】:2018-10-12 09:18:47
【问题描述】:

我正在尝试使用 Pandas 从数据框创建数据透视表。下面给出的是我的数据框的视图。

category,date,type1,type2,total
PROD_A,2018-10-01,2,2,4
PROD_A,2018-10-02,2,0,2
PROD_B,2018-10-01,0,0,0
PROD_A,2018-10-03,0,0,0

我正在尝试创建一个数据透视表并将输出保存到一个 excel 文件中

Summary = pd.pivot_table(df, values=['total'], index=['category'], columns='date')

Summary.to_excel(writer, sheet_name='Summary')

我收到以下错误

KeyError : 'total'

谁能指导我这哪里出了问题。谢谢

更新数据类型:

category   object
date       object
type1      int64
type2      int64
total      float64
dtype:     object

df.head() 的输出:

category,date,type1,type2,total
PROD_A,2018-10-01,2,2,4
PROD_A,2018-10-02,2,0,2
PROD_B,2018-10-01,0,0,0
PROD_A,2018-10-03,0,0,0
PROD_B,2018-10-03,2,3,5

【问题讨论】:

  • 一个想法 - 如何工作Summary = pd.pivot_table(df, values='total', index='category', columns='date')
  • 检查print (df.columns.tolist())
  • @KevinNash - 对我来说效果很好,没有 keyerror
  • 如果使用Summary = pd.pivot_table(df, values='total', index='category', columns='date')那么没问题?
  • 可能需要Summary = pd.pivot_table(df, values='total', index='category', columns='date').reset_index()

标签: python pandas pivot-table keyerror


【解决方案1】:

问题是['total'],它在列中创建MultiIndex

Summary = pd.pivot_table(df, values=['total'], index=['category'], columns='date')

print (Summary)

              total                      
date     2018-10-01 2018-10-02 2018-10-03
category                                 
PROD_A          4.0        2.0        0.0
PROD_B          0.0        NaN        NaN

解决方案是使用删除它:

Summary = pd.pivot_table(df, values='total', index='category', columns='date')
print (Summary)
date      2018-10-01  2018-10-02  2018-10-03
category                                    
PROD_A           4.0         2.0         0.0
PROD_B           0.0         NaN         NaN

上次将索引转换为列由reset_index

Summary = (pd.pivot_table(df, values='total', index='category', columns='date')
             .reset_index(drop=True))
print (Summary)
date  2018-10-01  2018-10-02  2018-10-03
0            4.0         2.0         0.0
1            0.0         NaN         5.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多