字符串到pandas函数转换

时间:2017-09-26 06:55:21

标签: python-2.7 pandas

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

private void callApi() {

    String imei_no = getArguments().getString("imei_no");
    String  latitude  = getArguments().getString("lat");
    String longitude = getArguments().getString("long");
    String postal_code = getArguments().getString("postal_code");
}

但是我必须在下面的dict中选择基于操作/功能的键。

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

如何根据变量opType获得系列的均值/最大值等。我希望在程序中避免使用其他许多内容。请帮忙 。

2 个答案:

答案 0 :(得分:1)

如果稍微更改字典,可以使用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'])()

答案 1 :(得分:0)

您还可以使用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'