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