Reputation: 411
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
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
Reputation: 12493
I guess you need to:
import numpy as np
and then replace mean
with np.mean
Upvotes: 0