python - 方法类似于函数中的参数

标签 python r function pandas methods

我想在 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/

相关文章:

c - 数组、指针和字符串操作

PHP 数组语法解析错误左方括号 "["

python - Django Twoscoops 和 SECRET_KEY 生成

python - 如何在 GridSearchCV 中评估分类器的准确性并生成留一的 roc 曲线?

python - 值误差 x 和 y 的大小必须相同,但它们是吗?

R语言无法使用postgresqlWriteTable在postgresql中插入

python - 我可以使用 Scikit learn 和 autopy 来玩电子游戏吗?

r - Dataframe 列循环和基于 R 中条件的字符串连接(pref dplyr)

r - 使用 R 中的plotly 进行 3D 绘图

c++ - 如何检查对象是否在数组中?