2016-05-23 24 views
0

我的目標是創建跨越這條語句的功能包裝:的Python:使用變量作爲函數名

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將包含任意數量的像的平均,LEN,方差參數,我想要提供

此外,我希望能夠提供像數據2,數據3,而不是僅僅兩個陣列等示例中所示陣列的任何隨機數。

如何實現供應可變數量陣列的「SummaryFunction」和我想計算的參數變量號。

回答

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通過。