0

I aim to create a function wrapper across this statement:

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])

so that the wrapper function looks like:

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 would contain any number of parameters like mean, len, variance that I want to supply

Also I want to be able to supply any random number of arrays like Data2, Data3 instead of just two arrays like shown in example.

How do I achieve supplying the variable number of arrays to the "SummaryFunction" and variable number of parameters that I want to calculate.

0

1 Answer 1

2

It's unclear what is your input, but in Python functions are first-class objects and may be passed as function argument.

Sample implementation using *args may look like:

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

With sample usage:

summarywrapper(monthNumber, data, np.sum, np.var)

Here, functions itself are passed as variadic arguments.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.