我想在 python/pandas 中使用方法,就像函数中的参数一样。 例如数据框的滚动统计:
def rolling (df, prefix = 'r', window = 3, method = 'here I wanna choose a method' ):
for name in df.columns:
df[prefix + name] = df[name].rolling(window).'here this method been called'
return df
'mean()' 或 'sum()' 或其他... 喜欢
df.rolling(2).sum()
我 95% 的时间都在 R 中工作,而在 R 中它很简单(将函数作为参数或返回任何函数)。但是在 python 中我是菜鸟。所以我创建了一个包来让我的事情变得更容易。喜欢:
def head(x,k = 3):
return x.head(k)
python 中的哪个函数可以帮助我在函数中使用类似于参数的方法?
#some data
import numpy as np
import pandas as pd
from pandas_datareader.data import DataReader
from datetime import datetime
ibm = DataReader('IBM', 'yahoo', datetime(2000,1,1), datetime(2016,1,1))
ibm2 = rolling(ibm,'rr', 5, 'sum') # something like this
最佳答案
您可以使用 getattr
带有方法名称的 str 。这从对象中获取具有该名称的属性(在本例中为方法)
def rolling (df, prefix='r', window=3, method='sum'):
for name in df.columns:
df[prefix + name] = getattr(df[name].rolling(window), method)()
return df
或者您可以直接传入方法。调用它时,第一个参数将是 self
。
def rolling (df, prefix='r', window=3, method=DataReader.sum):
for name in df.columns:
df[prefix + name] = method(df[name].rolling(window))
return df
关于python - 方法类似于函数中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40136496/