gpt4 book ai didi

python - 无法在 pandas NamedAgg 函数中使用 lambda 函数

转载 作者:行者123 更新时间:2023-12-01 07:25:16 26 4
gpt4 key购买 nike

pandas 0.25 引入了一个名为 NamedAgg 的新函数,允许在 groupby 对象上创建命名字段,这是一个非常好的功能,请参阅(NamedAgg)。

但是,我似乎无法让它与 lambda 函数一起使用。我不知道这是一个错误还是设计使然。

设置:

df = pd.DataFrame({'kind': ['cat', 'dog', 'cat', 'dog'],
'height': [9.1, 6.0, 9.5, 34.0],
'weight': [7.9, 7.5, 9.9, 198.0]})

在字典中使用 lambda 效果很好。这是老方法。

(
df.groupby(by='kind')
.height.agg({'height_min':lambda x: np.min(x**2), 'height_max':'max'})
)

将 lambda 与新的 NamedAgg 函数一起使用不起作用

(
df.groupby(by='kind')
.agg(height_min=pd.NamedAgg(column='height', aggfunc=lambda x: np.min(x**2)),
height_max=pd.NamedAgg(column='height', aggfunc='max')
)
)

将 lambda 与隐式 NamedAgg 函数一起使用也不起作用

(
df.groupby(by='kind')
.agg(height_min=('height', lambda x: np.min(x**2)),
height_max=('height', 'max')
)
)

谁能解释一下为什么 lambda 函数在这里不起作用?

最佳答案

这是使用 0.25 语法和单个聚合列来执行此操作的一种方法:

df.groupby('kind')['height'].agg(height_min=lambda x: np.min(x**2),
height_max='max')

输出:

      height_min  height_max
kind
cat 82.81 9.5
dog 36.00 34.0

但是,我确实认为这是一个错误。

关于python - 无法在 pandas NamedAgg 函数中使用 lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57487132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com