2016-12-04 134 views
4

分組熊貓DataFrame時,我應該何時使用transform以及何時應該使用aggregate? 它們在實際應用方面有什麼區別,哪一個 認爲更重要?熊貓變換與聚合

回答

9

考慮數據框df

df = pd.DataFrame(dict(A=list('aabb'), B=[1, 2, 3, 4], C=[0, 9, 0, 9])) 

enter image description here


groupby是標準的使用aggregater

df.groupby('A').mean() 

enter image description here


也許您希望這些值在整個組中廣播並返回與您開始使用的索引相同的索引。
使用transform

df.groupby('A').transform('mean') 

enter image description here

df.set_index('A').groupby(level='A').transform('mean') 

enter image description here


agg用於您有特定的事情要運行不同的列或多個事情在同一列上運行。

df.groupby('A').agg(['mean', 'std']) 

enter image description here

df.groupby('A').agg(dict(B='sum', C=['mean', 'prod'])) 

enter image description here

+0

令人難以置信的巨大的答案! – mathopt