我想用自己的过滤器函数过滤数据框,该函数需要一个对象作为参数
def my_filter_function(df: pd.DataFrame, my_arg: object) -> bool:
我知道我可以做到以下几点
df.groupby('column_name').filter(lambda group_df: my_filter_function(group_df, my_arg))
但是我想知道有一种方法可以以某种方式简单地将my_arg作为参数传递,而my_filter_function可以使用它而无需使用lambda表达式。
像这样的东西,但是不起作用:
df.groupby('column_name').filter(my_filter_function, args=(my_arg,))
根据文档,您可以传递*args
和**kwargs
到该函数。这是python中的一个选项,它允许函数收集传递的所有其他参数(*args
对于常规参数,**kwargs
对于关键字参数)。然后,可以将这些参数传递给接收的函数。
最简单的方法是添加一个关键字参数,该参数将被捕获**kwargs
,如下所示:
df.groupby('column_name').filter(my_filter_function, my_arg=my_arg)
您还可以添加一个常规参数(将被捕获*args
),但是您需要预先指定所有其他参数。过滤器只有2个参数-函数和dropna。如果指定dropna
(默认值为True
),则可以添加将传递给函数的参数:
df.groupby('column_name').filter(my_filter_function, True, my_arg)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句