Python / Pandas:使用内置函数作为用户定义函数中的参数

时间:2018-08-15 09:39:17

标签: python pandas function

非常简单的查询,但似乎找不到合适的答案。我想例如通过Pandas方法.sum()作为我函数的输入。

def something(dataframe,col_name,func):
    return dataframe.col_name.func

something(df,'a',sum())

TypeError:预期总和至少为1个参数,为0。

Python将其与内置函数sum()混淆

2 个答案:

答案 0 :(得分:1)

您为此使用fields

operator.methodcaller

发生错误的原因是您试图传递不带参数的被调用函数的结果,而该函数恰巧需要要求起作用。

传递字符串的好处是您依赖于内置在Pandas框架中的久经考验的方法,例如pd.Series.sumpd.Series.mean等。虽然您可以尝试直接在Pandas系列中使用Python内置函数和NumPy函数,但您可能会发现与预期的差异。尽可能使用已记录的熊猫方法。

答案 1 :(得分:0)

在一般情况下,建议不要通过此方法获取功能,但这是一种无需任何其他导入的解决方案。 Python具有getattr内置函数,该函数“ [r]返回对象的命名属性的值”。其用法是getattr(object, name[, default])。因此,您需要按以下方式重写函数。

def something(dataframe,col_name,func):
    return getattr(dataframe[col_name], func)

something(df,'a',"sum")

如果要获得函数调用和的结果,请用return getattr(dataframe.col_name, func)()替换函数定义。