簡體   English   中英

在Pandas中轉換聚合函數中的列

[英]Transpose the columns in aggregate function in Pandas

我正在使用group by的聚合函數來獲取匯總值。 我的數據集:

df=pd.DataFrame({"A":['a','a','a','a','a','a','b','b','b','b'],
         "Sales":[2,3,7,1,4,3,5,6,9,10],
         "Units":[12,2,2,33,6,2,4,8,3,5],
         "Week":[1,2,2,1,2,1,1,2,2,1]})

在此,我正在應用該功能:

def my_agg(x):
    names = {
        'Sales': x['Sales'].sum(),
        'Units': x['Sales'].sum()
             } 

    return pd.Series(names, index=['Sales','Units'])
dfA= df.groupby(['A','Week']).apply(my_agg)

這給了我輸出:

    Sales  Units
A Week              
a 1         6      6
  2        14     14
b 1        15     15
  2        15     15

我想把一周轉換成列。 像這樣:需要的輸出:

   Week 1              2      
A      Sales  Units   Sales  Units        
a         6     6      14     14   
b        15    15      15     15

另外,請為OUTPUT 2建議:

           Sales         Units
A  Week   1            2
a         6    14      6      14   
b        15    15     15      15

unstackswaplevel

s=dfA.unstack()
s
Out[127]: 
     Sales     Units    
Week     1   2     1   2
A                       
a        6  14     6  14
b       15  15    15  15
s.swaplevel(0,1,axis=1).sort_index(level=0,axis=1)
Out[128]: 
Week     1           2      
     Sales Units Sales Units
A                           
a        6     6    14    14
b       15    15    15    15

輸出1

df.pivot_table(index='A', columns='Week', aggfunc='sum').swaplevel(1, 0, 1)

Week     1     2     1     2
     Sales Sales Units Units
A                           
a        6    14    47    10
b       15    15     9    11

輸出2

df.pivot_table(index='A', columns='Week', aggfunc='sum')

     Sales     Units    
Week     1   2     1   2
A                       
a        6  14    47  10
b       15  15     9  11

暫無
暫無

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

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