根据多个键之一对 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()
我在 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()