【发布时间】:2018-04-23 21:31:24
【问题描述】:
在 pandas documentation 的示例中,关于 GroupBy 对象的新 .pipe() 方法,接受相同 lambda 的 .apply() 方法将返回相同的结果。
In [195]: import numpy as np
In [196]: n = 1000
In [197]: df = pd.DataFrame({'Store': np.random.choice(['Store_1', 'Store_2'], n),
.....: 'Product': np.random.choice(['Product_1', 'Product_2', 'Product_3'], n),
.....: 'Revenue': (np.random.random(n)*50+10).round(2),
.....: 'Quantity': np.random.randint(1, 10, size=n)})
In [199]: (df.groupby(['Store', 'Product'])
.....: .pipe(lambda grp: grp.Revenue.sum()/grp.Quantity.sum())
.....: .unstack().round(2))
Out[199]:
Product Product_1 Product_2 Product_3
Store
Store_1 6.93 6.82 7.15
Store_2 6.69 6.64 6.77
我可以看到 pipe 功能与 apply 的 DataFrame 对象有何不同,但 GroupBy 对象却没有。有没有人解释或举例说明pipe 可以做什么,而apply 不能用于 GroupBy?
【问题讨论】:
标签: python python-3.x pandas pandas-groupby