Manish Kumar Singh
Manish Kumar Singh

Reputation: 411

Passing Function as parameter in python

I am trying to make a function to calculate rolling mean or sum :

def rolling_lag_creator(dataset,i,func):  
    dataset['Bid']=dataset.loc[:,'Bid'].rolling(window=i).func()
    return dataset

but this function is throwing error when i am calling this:

rolling_lag_creator(Hypothesis_ADS,5,mean)

Error:

NameError: name 'mean' is not defined

while below code works fine:

dataset['Bid']=dataset.loc[:,'Bid'].rolling(window=5).mean()

Can anyone help me how to call such methods as parameters, thank you.

Upvotes: 0

Views: 61

Answers (2)

wjandrea
wjandrea

Reputation: 32944

mean is a method, not a function per se. And anyway, attribute access doesn't work like that, but you can use getattr, something like this:

def rolling_lag_creator(dataset, i, method_name):
    method = getattr(dataset.loc[:,'Bid'].rolling(window=i), method_name)
    dataset['Bid'] = method()
    return dataset

rolling_lag_creator(Hypothesis_ADS, 5, 'mean')

Upvotes: 1

Roy2012
Roy2012

Reputation: 12493

I guess you need to:

import numpy as np

and then replace mean with np.mean

Upvotes: 0

Related Questions