非常简单的查询,但似乎找不到合适的答案。我想例如通过Pandas方法.sum()作为我函数的输入。
def something(dataframe,col_name,func):
return dataframe.col_name.func
something(df,'a',sum())
TypeError:预期总和至少为1个参数,为0。
Python将其与内置函数sum()混淆
答案 0 :(得分:1)
您为此使用fields
:
operator.methodcaller
发生错误的原因是您试图传递不带参数的被调用函数的结果,而该函数恰巧需要要求起作用。
传递字符串的好处是您依赖于内置在Pandas框架中的久经考验的方法,例如pd.Series.sum
,pd.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)()
替换函数定义。