Pandas Stack()意外结果

时间:2017-06-08 21:33:44

标签: python pandas

pandas stack()操作在实践中产生了一些意想不到的结果,我无法用一个小的工作示例进行复制。我很好奇其他人是否遇到过这种行为,以及是否有可能解释根本原因。首先,这是一个可重复的小例子,展示了我想要做的事情:

data = {'kpiOne': [1,1,1,1,1,2,2,2,2,2],
'kpiTwo': [3,3,3,3,3,4,4,4,4,4],
'kpiThree': [5,5,5,5,5,6,6,6,6,6],
'PrePost': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', ]}
dfr = pd.DataFrame(data)
dfr = dfr.groupby('PrePost').describe()
dfr = dfr.stack(0) #this is where my problem is in practice, but works fine in this example
dfr

以下是我在实际数据中使用的代码,以防有任何相关内容:

kpiSum = dfr[(dfr.filter_any == False) & (dfr.version == 'After')].groupby('waveTwoExp')[kpi].describe()
kpiSum = kpiSum#.stack(0)
kpiSum

输出看起来像这样(注释符号到位)我堆栈(0): [堆叠前] [1]   [1]:https://i.stack.imgur.com/cMTAK.png

当我删除注释符号和堆栈(0)时,输出如下所示: [堆叠后] [2]   [2]:https://i.stack.imgur.com/whXZ7.png

如果你仔细观察,你会注意到这些值被错误地堆叠了。堆叠前KPI,'uarl'的平均值是正确的 - 765.堆叠后,KPI'arl'的平均值来自下一级0列'alCost'或797484.我无法弄清楚为什么这种转变是发生的历史。

这让人很奇怪的是:

  1. 我可重复的示例没有表现出这种行为等等 重要的是:
  2. 在升级到Jupyter 5.0
  3. 之前,我的堆栈代码(0)工作正常

    如果我的问题很明确,请告诉我!其他人遇到这种行为?

    谢谢!
    克里斯

1 个答案:

答案 0 :(得分:0)

让我们尝试升级或降级版本。

这似乎是与MultiIndex/Reshaping differences between Pandas versions相关的错误。