Python 2.7 字符串到函数的转换

Python 2.7 字符串到函数的转换,python-2.7,pandas,Python 2.7,Pandas,我有熊猫系列,我可以得到下面给出的平均值 >>> s = pd.Series(np.random.randn(5)) >>> s 0 -0.426981 1 1.322446 2 -1.505474 3 0.411286 4 0.431440 dtype: float64 >>> s.mean() 0.046543382190213201

我有熊猫系列,我可以得到下面给出的平均值

    >>> s = pd.Series(np.random.randn(5))
    >>> s
    0   -0.426981
    1    1.322446
    2   -1.505474
    3    0.411286
    4    0.431440
    dtype: float64
    >>> s.mean()
    0.046543382190213201
    >>> s.max()
    1.3224457683044697
但我必须选择以下dict中给出的基于操作/功能的键

 >>> pfync = {'average': 'mean()', 'maximin': 'max()', 'minimum': 'min()', 'Standard deviation': 'std()'}
    >>> opType=pfync['average']
    >>> opType
    'mean()'
    >>>

如何根据变量opType获取序列的平均/最大etc值。我想在我的程序中避免很多if-else。请帮忙

如果您稍微修改一下词典,就可以使用
pd.Series.agg

pfync = {
    'average': 'mean',
    'maximin': 'max',
    'minimum': 'min',
    'Standard deviation': 'std'
}

s.agg(pfync['average'])

0.046543382190213201
如果你不能修改字典,只需去掉括号

s.agg(pfync['average'].strip('()'))

0.046543382190213201

对于
0.20
之前版本的pandas,您可以使用
\uuu getattr\uuu

s.__getattr__(pfync['average'])()

您还可以使用eval来获取您要查找的值。不确定用例到底是什么,所以我正在打印这些值

import numpy as np
import pandas as pd

pfync = {
    'average': 'mean()',
    'maximin': 'max()',
    'minimum': 'min()',
    'Standard deviation': 'std()'
}

s = pd.Series(np.random.randn(5))

for k, v in pfync.iteritems():
    print v
    print eval('s.'+v), '\n'

在改变口述之后。我得到这个错误AttributeError:“Series”对象没有属性“agg”。pd版本=0.19.2