基于多个键中的一个,在pandas中对一系列的值求和?

时间:2015-01-13 16:42:21

标签: python pandas

我在python中使用pandas,我有一个pandas Series对象,我不能为我的生活弄清楚。它基本上是这样的:

>>>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

我尝试了很多不同的东西,在一个普通的数组中,这对我来说不是问题,但是熊猫系列对象是新的,令我困惑。有人可以提供一些帮助吗?

1 个答案:

答案 0 :(得分:5)

您可以使用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()