gpt4 book ai didi

python - pandas pivot_table 的边距仅垂直聚合

转载 作者:行者123 更新时间:2023-12-05 00:56:49 25 4
gpt4 key购买 nike

考虑一个数据框:

df = pd.DataFrame(
{'last_year': [1, 2, 3], 'next_year': [4, 5, 6]},
index=['foo', 'bar', 'star']
)
      last_year  next_year
foo 1 4
bar 2 5
star 3 6

我正在寻找一种简单的方法来显示此表周围的总计,包括列和行。

我的想法是通过 .pivot_table():

pd.pivot_table(
df,
index=df.index,
margins=True,
aggfunc=sum
)

但是,这只适用于第一个轴(垂直):

      last_year  next_year
bar 2 5
foo 1 4
star 3 6
All 6 15

我错过了什么?为什么没有按行计算总计,就像在 this documentation's example 中一样?另外,为什么会弄乱我的索引顺序?

我对 df['All'] = df.sum(axis=1) 之类的解决方案不感兴趣;我想要一种不影响我原始数据框的动态方法。数据透视表似乎是最合乎逻辑的方法(据我所知),但也许还有更好的方法!

最佳答案

我的猜测是,pivot_table 中的每一列都是其自己的组,因此您看不到水平聚合(聚合单个元素是毫无意义的)。为了演示差异,请考虑 stack():

(df.stack().reset_index(name='value')
.pivot_table(index='level_0', columns='level_1', values='value', margins=True,
aggfunc='sum')
)

输出:

level_1  last_year  next_year  All
level_0
bar 2 5 7
foo 1 4 5
star 3 6 9
All 6 15 21

也就是说,这很可能是一个错误。

关于python - pandas pivot_table 的边距仅垂直聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61620499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com