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.我无法弄清楚为什么这种转变是发生的历史。
这让人很奇怪的是:
如果我的问题很明确,请告诉我!其他人遇到这种行为?
谢谢!
克里斯
答案 0 :(得分:0)
让我们尝试升级或降级版本。
这似乎是与MultiIndex/Reshaping differences between Pandas versions相关的错误。