我知道在Pandas中可以给聚合操作取名,方法如下:
import pandas as pd
import numpy as np
df = pd.DataFrame({'col': [1,2,3],
'group' : ['a','a','b']})
df.groupby('group').agg(mymean = ('col', 'mean'),
mymax = ('col', 'max'),
mymin = ('col', 'min'))
Out[23]:
mymean mymax mymin
group
a 1.5 2 1
b 3.0 3 3
这很方便,因为我可以创建多个变量并实时命名。 我希望能够用.transform()
(或.apply()
)做同样的事情。
不幸的是,同样的技巧不起作用:
df.groupby('group').transform(mymean = ('col', 'mean'),
mymax = ('col', 'max'),
mymin = ('col', 'min'))
Traceback (most recent call last):
File "<ipython-input-24-3a6cf53bd93e>", line 1, in <module>
df.groupby('group').transform(mymean = ('col', 'mean'),
TypeError: transform() missing 1 required positional argument: 'func'
什么是使用 transform 创建多个变量的最简洁方式?输出应该是:
Out[25]:
col group mymean mymax
0 1 a 1 2
1 2 a 1 2
2 3 b 3 3
assign
可以和groupby
一起使用吗? - ℕʘʘḆḽḘdf.merge(df.groupby('group').agg().reset_index())
已经足够好了~ - BENY