Pandas系列运算符作为函数参数

时间:2016-07-06 12:39:53

标签: python pandas

背景

我想对熊猫系列进行计算。此计算涉及minmax。计算使用两次。在这两种情况下,除minmax函数外,它们的计算方法相同,不一致。

我创建了一个执行此计算的功能:

def my_calc(my_series):
   return my_series.rolling(...).max()

问题

我不知道如何将max作为my_calc的参数传递。

尝试

  • This solution仅适用于基本操作员。
  • 目前我使用my_calc(my_series).max()my_calc(my_series).min()

4 个答案:

答案 0 :(得分:1)

真的没有办法做到这一点。

.arrow

答案 1 :(得分:1)

使用函数名称作为字符串调用my_calc,然后使用getattr

def my_calc(my_series, func_name):
    try:
        return getattr(my_series.rolling(...), func_name)()
    except AttributeError:
        print('{} has no attribute {}'.format(type(my_series), func_name))

my_calc(my_series, 'min')

答案 2 :(得分:1)

试试这个rolling_max

def my_calc(my_series):
  return my_series.rolling_max(...)

答案 3 :(得分:1)

您可以使用apply(或agg):

def my_calc(my_series, func):
   return my_series.rolling(...).apply(func)

并使用如下:

my_calc(ser, np.mean)
Out[321]: 
0    NaN
1    0.5
2    0.0
3    0.5
4    2.0
Name: a, dtype: float64