【发布时间】:2017-07-20 23:05:18
【问题描述】:
我有一个看起来像这样的 DataFrame:
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
还有一个看起来像这样的函数(注意:它实际上正在做一些更复杂的事情,不能轻易分成三个独立的调用,但为了清楚起见,我正在简化): p>
def myfunc(g):
return min(g), mean(g), max(g)
我想在A 上使用groupby 和myfunc 以获得B 和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 在多个重复的列中,并且在调用多个函数时感觉就像在找错树。
【问题讨论】:
标签: python pandas multi-index