gpt4 book ai didi

python - Pandas,计算每个 MultiIndex 子级别的总和

转载 作者:太空狗 更新时间:2023-10-30 01:37:58 24 4
gpt4 key购买 nike

我想计算每个多索引子级别的总和。然后,将其保存在数据框中。

我当前的数据框如下所示:

                    values
first second
bar one 0.106521
two 1.964873
baz one 1.289683
two -0.696361
foo one -0.309505
two 2.890406
qux one -0.758369
two 1.302628

所需的结果是:

                    values
first second
bar one 0.106521
two 1.964873
total 2.071394
baz one 1.289683
two -0.696361
total 0.593322
foo one -0.309505
two 2.890406
total 2.580901
qux one -0.758369
two 1.302628
total 0.544259
total one 0.328331
two 5.461546
total 5.789877

目前我发现以下实现有效。但我想知道是否有更好的选择。我需要最快的解决方案,因为在某些情况下,当我的数据帧变得很大时,计算时间似乎会很长。

In [1]: arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
...: ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
...:

In [2]: tuples = list(zip(*arrays))

In [3]: index = MultiIndex.from_tuples(tuples, names=['first', 'second'])

In [4]: s = Series(randn(8), index=index)

In [5]: d = {'values': s}

In [6]: df = DataFrame(d)

In [7]: for col in df.index.names:
.....: df = df.unstack(col)
.....: df[('values', 'total')] = df.sum(axis=1)
.....: df = df.stack()
.....:

最佳答案

不确定您是否仍在寻找这个问题的答案 - 您可以尝试这样的事情,假设您当前的数据帧已分配给 df :

temp = df.pivot(index='first', columns='second', values='values')
temp['total'] = temp['one'] + temp['two']
temp.stack()

关于python - Pandas,计算每个 MultiIndex 子级别的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29413496/

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