gpt4 book ai didi

python - 我可以以及如何将参数传递给聚合中使用的多个函数?

转载 作者:行者123 更新时间:2023-11-28 21:40:19 26 4
gpt4 key购买 nike

考虑数据框 df

df = pd.DataFrame(dict(
A=list('xxxyyy'),
B=[np.nan, 1, 2, 3, 4, np.nan]
))

df

A B
0 x NaN
1 x 1.0
2 x 2.0
3 y 3.0
4 y 4.0
5 y NaN

我可以在 agg 中使用函数并传递这样的参数

df.groupby('A').B.agg(pd.Series.head, n=1)

A
x NaN
y 3.0
Name: B, dtype: float64

但是,我想使用 pd.Series.headpd.Series.tail 运行聚合。我想将参数 n=1 传递给它们。

我希望此聚合看起来像下面的结果。重要的是要注意我已经可以产生这个结果了。我的目标是弄清楚如何将参数传递给正在传递给 agg 的多个函数。

如果无法完成,解释原因将是一个有效的答案。

     h    t
A
x NaN 2.0
y 3.0 NaN

增加激励
如果你弄明白了......这将是一个比我为 this question 提供的解决方案更好的解决方案。 .我会鼓励回答这个问题的人也回答那个问题。

最佳答案

如果我明白the source code正确地,它不能完成:

def aggregate(self, func_or_funcs, *args, **kwargs):
_level = kwargs.pop('_level', None)
if isinstance(func_or_funcs, compat.string_types):
return getattr(self, func_or_funcs)(*args, **kwargs) # NOTE: (*args, **kwargs) are passed to the function

if hasattr(func_or_funcs, '__iter__'):
ret = self._aggregate_multiple_funcs(func_or_funcs, # NOTE: `*args, **kwargs` got lost ...
(_level or 0) + 1)
...

注意如果func_or_funcs'__iter__'属性*args**kwargs 将被忽略...

关于python - 我可以以及如何将参数传递给聚合中使用的多个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45745029/

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