簡體   English   中英

熊貓集團有特殊金額

[英]Pandas GroupBy with special sum

假設我有這樣的數據,我想根據功能和類型對它們進行分組。

feature  type    size
Alabama  1       100
Alabama  2       50
Alabama  3       40
Wyoming  1       180
Wyoming  2       150
Wyoming  3       56

當我應用df=df.groupby(['feature','type']).sum()[['size']] ,我得到了預期的結果。

                size
(Alabama,1)     100
(Alabama,2)     50
(Alabama,3)     40
(Wyoming,1)     180
(Wyoming,2)     150
(Wyoming,3)     56

但是我想要只使用相同類型而不是類型和功能的大小。雖然這樣做我想保持索引作為(功能,類型)元組。 我的意思是我想得到這樣的東西,

                size
(Alabama,1)     280
(Alabama,2)     200
(Alabama,3)     96
(Wyoming,1)     280
(Wyoming,2)     200
(Wyoming,3)     96

我很難找到一種方法來做到這一點。 我需要一些幫助謝謝

set_index用於MultiIndex ,然后使用sum進行transform ,以返回相同長度的Series聚合函數:

df = df.set_index(['feature','type'])
df['size'] = df.groupby(['type'])['size'].transform('sum')
print (df)
              size
feature type      
Alabama 1      280
        2      200
        3       96
Wyoming 1      280
        2      200
        3       96

編輯:首先聚合兩列,然后使用transform

df = df.groupby(['feature','type']).sum()
df['size'] = df.groupby(['type'])['size'].transform('sum')
print (df)
              size
feature type      
Alabama 1      280
        2      200
        3       96
Wyoming 1      280
        2      200
        3       96

這是一種方式:

df['size'] = df['type'].map(df.groupby('type')['size'].sum())

df.groupby(['feature', 'type'])['size_type'].sum()

# feature  type
# Alabama  1       280
#          2       200
#          3        96
# Wyoming  1       280
#          2       200
#          3        96
# Name: size_type, dtype: int64

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM