pandas.core.resample.Resampler.pipe#

final Resampler.pipe(func, *args, **kwargs)[源代码]#

将带有参数的 func 应用于此 Resampler 对象并返回其结果。

当您想通过链接期望 Series、DataFrame、GroupBy 或 Resampler 对象的函数来提高可读性时,可以使用 .pipe。而不是写

>>> h = lambda x, arg2, arg3: x + 1 - arg2 * arg3
>>> g = lambda x, arg1: x * 5 / arg1
>>> f = lambda x: x ** 4
>>> df = pd.DataFrame([["a", 4], ["b", 5]], columns=["group", "value"])
>>> h(g(f(df.groupby('group')), arg1=1), arg2=2, arg3=3)  

你可以这样写

>>> (df.groupby('group')
...    .pipe(f)
...    .pipe(g, arg1=1)
...    .pipe(h, arg2=2, arg3=3))  

更具可读性。

Parameters:
funccallable 或 (callable, str) 元组

要应用于此 Resampler 对象的功能,或者,也可以是 (callable, data_keyword) 元组,其中 data_keyword 是一个字符串,指示 callable 中期望 Resampler 对象的关键字。

argsiterable, 可选

传递给 func 的位置参数。

kwargsdict, 可选

传递给 func 的关键字参数字典。

Returns:
func 的返回类型。

参见

Series.pipe

将带有参数的函数应用于 Series。

DataFrame.pipe

将带有参数的函数应用于 DataFrame。

apply

将函数应用于每个组而不是整个 Resampler 对象。

Notes

See more here

Examples

>>> df = pd.DataFrame({'A': [1, 2, 3, 4]},
...                   index=pd.date_range('2012-08-02', periods=4))
>>> df
            A
2012-08-02  1
2012-08-03  2
2012-08-04  3
2012-08-05  4

要一次性获取每个 2 天期间的最大值和最小值之差,您可以这样做:

>>> df.resample('2D').pipe(lambda x: x.max() - x.min())
            A
2012-08-02  1
2012-08-04  1