pandas.core.groupby.DataFrameGroupBy.pipe#
- DataFrameGroupBy.pipe(func, *args, **kwargs)[源代码]#
将带有参数的
func应用于此 GroupBy 对象并返回其结果。当您想通过链接期望 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) 元组
应用到此 GroupBy 对象的函数,或者,一个``(callable, data_keyword)``元组,其中``data_keyword``是``callable``中指示期望GroupBy对象的关键字的字符串。
- argsiterable, 可选
传递给
func的位置参数。- kwargsdict, 可选
传递给
func的关键字参数字典。
- Returns:
func的返回类型。
参见
Series.pipe将带有参数的函数应用于 Series。
DataFrame.pipe将带有参数的函数应用于 DataFrame。
apply将函数应用于每个组,而不是整个 GroupBy 对象。
Notes
See more here
Examples
>>> 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