2016-02-25 78 views
0

我有一個數據幀,我想按羣組分析。我可以通過以下方式輕鬆完成。但我也想添加一個「全部」組,而不必額外拷貝數據。因此,而不是2個單獨的不相交組,我想添加包含所有內容的另一個組。用例是我想遍歷每個組和一個所有組,以保持一切可讀性。如何在熊貓羣組中添加「全部」羣組由

df=pd.DataFrame({'A': ['good', 'good', 'bad'], 'B' :[4,2,1], 'C':[10,10,10]}) 
df_groups=df.groupby('A') 
for group, df in df_groups: 
    print group 
    //do group level computation 

例如我想事情做迭代像

for group, df in zip(df_groups.groups.keys() + ['all'], df_groups.groups.values() + df_groups.groups.values()): 
    print group 
    //do group level computation. This time on each group, and also an all group. 
+0

我不明白你的問題,如果你處理每個組+所有數據,那麼你會處理你的數據兩次? –

+0

是的,我需要以不同的方式處理數據。假設我需要計算每個組和所有組的標準差(np.std)。 – user2015487

+0

爲什麼不使用groupby就可以做到這一點? –

回答

1

您可以將pivot_table功能的margin參數設置爲True累計獲得(「全部」)。

df = pd.DataFrame({'A': ['good', 'good', 'bad'], 'B' :[4,2,1], 'C':[10,10,10]}) 

pd.pivot_table(df, index=['A'], aggfunc=np.sum, margins=True) 

     B C 
A   
bad 1 10 
good 6 20 
All 7 30