我想对熊猫系列进行计算。此计算涉及min
和max
。计算使用两次。在这两种情况下,除min
或max
函数外,它们的计算方法相同,不一致。
我创建了一个执行此计算的功能:
def my_calc(my_series):
return my_series.rolling(...).max()
我不知道如何将max
作为my_calc
的参数传递。
my_calc(my_series).max()
和my_calc(my_series).min()
答案 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