我的目标是在这个语句中创建一个函数包装器:
import pandas as pd
import numpy as np
MonthNumber = np.array([1,1,2,4,5,6,5])
Data = np.array([1.1,3,.52,34,15,45,34])
Data2 = Data * 1.1
Data3 = Data * 2
df = pd.DataFrame({'Month':MonthNumber, 'Data':Data})
Summary = pd.pivot_table(df,index=['Month'],values='Data'],aggfunc=[np.sum,np.var])
以便包装函数看起来像:
def summarywrapper(MonthNumber,Data,**kwargs):
df = pd.DataFrame({'Month':MonthNumber, 'Data':Data})
Summary = pd.pivot_table(df,index=['Month'],values='Data'],aggfunc=[kwar1,kwarg2,etc])
return Summary
** kwargs会包含任意数量的参数,例如我想提供的mean,len,variance
此外,我希望能够提供任意数量的数组,如Data2,Data3,而不仅仅是两个数组,如示例所示。
如何实现向“SummaryFunction”提供可变数量的数组以及我想要计算的可变数量的参数。
答案 0 :(得分:2)
目前还不清楚你的输入是什么,但Python函数是first-class objects,可以作为函数参数传递。
使用* args的示例实现可能如下所示:
def summarywrapper(MonthNumber, Data, *args):
df = pd.DataFrame({'Month':MonthNumber, 'Data':Data})
Summary = pd.pivot_table(df,index=['Month'],values='Data'],aggfunc=args)
return Summary
使用样本:
summarywrapper(monthNumber, data, np.sum, np.var)
此处,函数本身作为variadic arguments传递。