我有一個數據幀,看起來是這樣的:熊貓GROUPBY彙總到新列
A B C D
1 10 22 14
1 12 20 37
1 11 8 18
1 10 10 6
2 11 13 4
2 12 10 12
3 14 0 5
而且看起來是這樣的(注意的功能:它實際上是做一些更復雜,不能輕易分隔成三個獨立的電話,但我簡化爲清楚起見):
def myfunc(g):
return min(g), mean(g), max(g)
我想在A
使用groupby
與myfunc
獲得對列輸出和C
(忽略D
)是這樣的:
B C
min mean max min mean max
A
1 10 10.75 12 8 15.0 22
2 11 11.50 12 10 11.5 13
3 14 14.00 14 0 0.0 0
我可以做到以下幾點:
df2.groupby('A')[['B','C']].agg(
{
'min': lambda g: myfunc(g)[0],
'mean': lambda g: myfunc(g)[1],
'max': lambda g: myfunc(g)[2]
})
從
但隨後預留這是醜陋的,並呼籲myfunc
多次,我結束了
max mean min
B C B C B C
A
1 12 22 10.75 15.0 10 8
2 12 13 11.50 11.5 11 10
3 14 0 14.00 0.0 14 0
我可以使用.swaplevel(axis=1)
交換列級別,但即使如此B
和C
是在多個重複的列中,並且使用多個函數調用時,感覺就像吠叫錯誤的樹。
注意:它實際上是做一些更復雜,不容易被分隔成三個獨立的電話,但我簡化清晰 – Dan