- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想要一个采用 GroupBy 操作(例如mean()、max())作为参数的函数。我不确定如何包含这些函数的参数。例如,在分位数的情况下,有一个参数用于告诉哪个分位数,因此在这种情况下我应该能够提供这个额外的参数。
def compute_moment(data, moment = pd.core.groupby.GroupBy.mean):
# This builds columns that we will use to group.
group_data = data.rank(pct = True).round(1).add_suffix('_grouper')
df = data.join(group_data)
out = []
for col in data.columns:
#This is the key step, what if I want moment to be, say quantile(q = .7)?
x = df.groupby(col+'_grouper').mean()[col] #no problem here
y = moment(df.groupby(col+'_grouper'))['y']
out += [pd.concat([x, y], axis=1)]
return out
>>> out = compute_moment(data, pd.core.groupby.GroupBy.mean)
#output is a list of dataframes like this one:
>>> print out[0]
rho y
rho_grouper
0.0 0.024998 0.035754
0.1 0.099908 0.036522
0.2 0.199903 0.032319
0.3 0.299908 0.038726
0.4 0.399907 0.034523
0.5 0.499907 0.031123
0.6 0.599909 0.031352
0.7 0.699908 0.030531
0.8 0.799902 0.031277
0.9 0.899904 0.028456
1.0 0.974912 0.029378
我想知道如何正确地执行此操作,或者为什么不知道一个更简单的替代方案来拥有一个应用这些 groupby 操作的函数,并让我在必要时传递参数。
顺便问一下,传递 pandas.GroupBy 函数作为参数可以吗?
最佳答案
传递任何你想要的东西都是可以的,只要它有效并且能很好地为你服务。您可以将函数的 agrs 作为附加的 dict/tuple 参数传递,或者仅使用 *args 和 **kwargs。
仍然不清楚您想在这里实现什么目标。首先,看起来您在函数中弄乱了 data
和 df
。其次,如果我理解正确的话,pd.core.groupby.GroupBy
是一个数据对象的类 - 这是你从df.groupby
得到的,而不是另一种方式。因此,您不应该在这里使用它。
但是,您可以简单地传递字符串或 agg 函数作为参数,然后将它们应用到 .agg
方法中:
def foo(df, agg='mean'):
momentum = df.groupby('grouper').agg(agg)
这样你就可以将字符串('mean','sum')或数组,或字典,甚至函数传递到agg
参数中。此外,在这种情况下,数组将导致将数组中的所有函数应用于所有列,因此您不必加入,也不必循环。
要了解有关 groupby
工作原理的更多信息,请查看此处,例如: https://chrisalbon.com/python/pandas_apply_operations_to_groups.html
关于python - 在 python 函数中将 pandas GroupBy 函数作为参数传递可以吗?我应该如何传递他们的论点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47681739/
这个问题在这里已经有了答案: 8年前关闭。 Possible Duplicate: How to use R's ellipsis feature when writing your own func
当我尝试指定我想要 pull 最新版本的 pod 时,根据 Cocoapods official docs ,我将它列在我的 podfile 中,如下所示: pod 'ReactiveCocoa',
我是一名优秀的程序员,十分优秀!