pandas.core.groupby.SeriesGroupBy.pipe#

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

func 及其参数应用于此 GroupBy 对象并返回其结果。

当你想通过将期望 Series、DataFrames、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))  

这更加易读。

参数:
func可调用对象或 (可调用对象, str) 的元组

应用于这个 GroupBy 对象的函数,或者一个 (可调用对象, data_keyword) 元组,其中 data_keyword 是一个字符串,指示 可调用对象 中期望 GroupBy 对象的关键字。

*args可迭代对象, 可选

传递给 func 的位置参数。

**kwargsdict, 可选

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

返回:
GroupBy

应用了函数 func 的原始对象。

参见

Series.pipe

对一个序列应用带有参数的函数。

DataFrame.pipe

将带有参数的函数应用于数据框。

apply

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

注释

更多内容请参见 这里

例子

>>> df = pd.DataFrame({'A': 'a b a b'.split(), 'B': [1, 2, 3, 4]})
>>> df
   A  B
0  a  1
1  b  2
2  a  3
3  b  4

要在一次遍历中获取每个组的最大值和最小值之间的差异,你可以这样做

>>> df.groupby('A').pipe(lambda x: x.max() - x.min())
   B
A
a  2
b  2