首页 > 解决方案 > 按字符串名称执行函数

问题描述

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

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()

感谢您在这里的任何帮助。

标签: pythonstringpandasfunctionrolling-computation

解决方案


是的,您可以使用内置getattr功能。

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

如果它看起来很阴暗:

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

推荐阅读