2015-10-05 70 views
1

我有以下聲明:熊貓AGG在同一列有多個彙總

print p.df.groupby(by="Sector").agg({"Average % Weight Port":"sum","Average % Weight Port":"mean"}) 

這給了我:

平均%重量港口

部門
現金0.16

非必需消費品9.36

所必需消費品6.60

能源7.41

財務14.02

保健12.43

工業股20.45 ....

又名只有一列。我如何在一列上得到兩個彙總統計數據?

謝謝

回答

1

字典只能有一個值與一個鍵相關聯,所以語法不起作用。有浮現在腦海中獲得類似的輸出其它兩種選擇:你可以用括號選擇列,然後傳遞要應用減少操作的列表:

>>> df = pd.DataFrame({"sector": ["a","a","b","b"], "AWP": [10,20,30,32]}) 
>>> df.groupby("sector")["AWP"].agg(["sum", "mean"]) 
     sum mean 
sector   
a  30 15 
b  62 31 

或者你可以仍然使用字典,但使用的操作的列表作爲值:

>>> df.groupby("sector").agg({"AWP": ["sum", "mean"]}) 
     AWP  
     sum mean 
sector   
a  30 15 
b  62 31 

注意,在這最後的版本中,你保存關於聚集列的名稱的信息。

如果你想要不同名稱的列,您可以添加一個.rename(columns={"sum": "s2"}),或使用字典作爲值:

>>> df.groupby("sector").agg({"AWP": {"newsum": "sum", "newmean": "mean"}}) 
      AWP   
     newsum newmean 
sector    
a   30  15 
b   62  31 
+0

有沒有辦法使用'.groupby(「X」)時,重命名列.agg({ 「ABC」: 「和」})' –