字符串熊猫函数转换
问题描述:
我有熊猫系列,我可以得到如下给出的平均值。字符串熊猫函数转换
>>> 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
但我必须选择下面的代码中给出的基于操作/函数的键。
>>> pfync = {'average': 'mean()', 'maximin': 'max()', 'minimum': 'min()', 'Standard deviation': 'std()'}
>>> opType=pfync['average']
>>> opType
'mean()'
>>>
我怎样才能得到基于变量opType的系列的平均/最大等值。我想在我的程序中避免很多其他情况。请帮忙 。
答
如果你改变你的字典只是有点,你可以使用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
旧版本的熊猫,你可以使用__getattr__
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:'系列'对象没有'agg'属性。 pd version = 0.19.2 –
我已更新我的帖子。让我知道这是否有效。 – piRSquared