【问题标题】:Pandas KeyError using pivotPandas KeyError 使用枢轴
【发布时间】:2016-09-06 02:57:53
【问题描述】:

我是 Python 新手,我想使用 Python 来复制一个常见的 Excel 任务。如果已经回答了这样的问题,请告诉我。我一直找不到它。我有以下熊猫数据框(数据):

Date    Stage   SubStage    Value
12/31/2015   1.00   a   0.896882891
1/1/2016     1.00   a   0.0458843
1/2/2016     1.00   a   0.126805588
1/3/2016     1.00   b   0.615824461
1/4/2016     1.00   b   0.245092069
1/5/2016     1.00   c   0.121936318
1/6/2016     1.00   c   0.170198128
1/7/2016     1.00   c   0.735872415
1/8/2016     1.00   c   0.542361912
1/4/2016     2.00   a   0.723769247
1/5/2016     2.00   a   0.305570257
1/6/2016     2.00   b   0.47461605
1/7/2016     2.00   b   0.173702623
1/8/2016     2.00   c   0.969260251
1/9/2016     2.00   c   0.017170798

在 excel 中,我可以使用数据透视表生成以下内容:

在python中做以下事情似乎是合理的:

data.pivot(index='Date',
           columns=['Stage', 'SubStage'],
           values='Value')

但这会产生:

KeyError: 'Level Stage not found'

什么给了?

【问题讨论】:

  • 您的列标签是否有尾随或前导空格?通过检查data.columns
  • 他们没有:data.columns Index(['Date', 'Stage', 'SubStage', 'Value'], dtype='object')

标签: python pandas pivot-table keyerror


【解决方案1】:

你想要.pivot_table,而不是.pivot

import pandas
from io import StringIO

x = StringIO("""\
Date    Stage   SubStage    Value
12/31/2015   1.00   a   0.896882891
1/1/2016     1.00   a   0.0458843
1/2/2016     1.00   a   0.126805588
1/3/2016     1.00   b   0.615824461
1/4/2016     1.00   b   0.245092069
1/5/2016     1.00   c   0.121936318
1/6/2016     1.00   c   0.170198128
1/7/2016     1.00   c   0.735872415
1/8/2016     1.00   c   0.542361912
1/4/2016     2.00   a   0.723769247
1/5/2016     2.00   a   0.305570257
1/6/2016     2.00   b   0.47461605
1/7/2016     2.00   b   0.173702623
1/8/2016     2.00   c   0.969260251
1/9/2016     2.00   c   0.017170798
""")

df = pandas.read_table(x, sep='\s+')
xtab = df.pivot_table(index='Date', columns=['Stage','SubStage'], values='Value')
print(xtab.to_string(na_rep='--'))

这给了我:

Stage            1.0                           2.0                    
SubStage           a         b         c         a         b         c
Date                                                                  
1/1/2016    0.045884        --        --        --        --        --
1/2/2016    0.126806        --        --        --        --        --
1/3/2016          --  0.615824        --        --        --        --
1/4/2016          --  0.245092        --  0.723769        --        --
1/5/2016          --        --  0.121936  0.305570        --        --
1/6/2016          --        --  0.170198        --  0.474616        --
1/7/2016          --        --  0.735872        --  0.173703        --
1/8/2016          --        --  0.542362        --        --  0.969260
1/9/2016          --        --        --        --        --  0.017171
12/31/2015  0.896883        --        --        --        --        --

【讨论】:

  • 这很有帮助。一般来说,pivot_table 与 pivot 相比是公认的最佳实践吗?为什么同一个概念有两种功能?
  • 它们有不同的用途,但我无法告诉你它们是什么。我总是用多级索引stack/unstack 来做这样的事情。 @trob
  • 优秀。谢谢!
猜你喜欢
  • 2017-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
  • 1970-01-01
  • 2015-05-30
  • 2022-01-03
相关资源
最近更新 更多