【问题标题】:Executing Function by String Name按字符串名称执行函数
【发布时间】:2019-04-05 09:57:51
【问题描述】:

我有一个熊猫系列定义如下:

import pandas as pd
series = pd.Series([11,9,13], index=[1,2,3])

我使用以下方法计算滚动序列:

rolling = series.rolling(window=3, min_periods=3, center=True)

我现在想将给定的method 应用于这个滚动的series,如下所示:

method = 'median'
if method == 'median':
    series = rolling.median()
elif method == 'mean':
    series = rolling.mean()

是否可以仅使用字符串名称来实现?例如我会这样做:

if method in ['mean', 'median']:
    series = rolling.method()

感谢您的帮助。

【问题讨论】:

    标签: python string pandas function rolling-computation


    【解决方案1】:

    是的,您可以使用内置的getattr 函数。

    if method in ('mean', 'median'):
        series = getattr(rolling, method)()
    

    如果它看起来很阴暗:

    >>> getattr(rolling, median) == rolling.median
    True
    

    【讨论】:

    • 感谢您的建议。所以没有公共 API?
    • @AlexJ.R.Lewis __getattribute__ 公共API,不是吗? :) 无论如何,我已经更新了我的问题以使用 getattr 代替,以防 dunders 看起来很老套。
    • 是的 - 但我想经验法则是不要碰_var,绝对不要碰__var ...
    猜你喜欢
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 2010-09-26
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多