根据多个键之一对 pandas 中的一系列值求和?

Sum the values of a series in pandas based on one of multiple keys?

我在 python 中使用 pandas,我有一个 pandas 系列对象,我一辈子都弄不明白。它基本上看起来像这样:

>>>print(series_object)

key1              key2      key3                                                             
First class       19438     Error1:0       117
                  16431     Error2:0       80
                  1         Error3:0       70
Second class      28039     Error4:0       65
Third class       2063      Error5:0       28
                  19439     Error6:0       25
Fourth class      25975     Error7:0       11
Fifth class       23111     Error8:0       7
                  1243      Error9:665     4
                            Error9:581     3
                  27525     Error10:0      3
                  1243      Error9:748     2
                  1247      Error11:65     2
                  1243      Error9:852     2
                  1247      Error11:66     2
                            Error11:70     1
                            Error11:95     1
                            Error11:181    1
                            Error11:102    1
                            Error11:160    1

我想要一种方法来对 key2 匹配的此对象的值求和,以便将 series_object 更改为:

>>>print(series_object)
key1              key2      key3                                                             
First class       19438     Error1:0       117
                  16431     Error2:0       80
                  1         Error3:0       70
Second class      28039     Error4:0       65
Third class       2063      Error5:0       28
                  19439     Error6:0       25
Fourth class      25975     Error7:0       11
Fifth class       23111     Error8:0       7
                  1243      Error9:665     11
                  27525     Error10:0      3
                  1247      Error11:65     9

我尝试了很多不同的东西,在普通数组中,这对我来说不是问题,但是 pandas 系列对象是新的,让我感到困惑。谁能提供一些帮助?

你可以使用groupby。

http://pandas.pydata.org/pandas-docs/stable/groupby.html#groupby-with-multiindex

你的情况

series_object.groupby(level='key2').sum()

或者如果您还想保留 'key1' 信息

series_object.groupby(level=['key1', 'key2']).sum()