我想知道大熊猫中groupby对象的过滤,聚合和转换方法如何遍历数据帧
为此,我尝试了此数据集:
df = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv")
现在我尝试打印这三种方法迭代的每个对象的形状。
用于过滤器:
df.groupby('day').filter(lambda x: print(x.shape))
out: (19, 7)
(87, 7)
(76, 7)
(62, 7)
所以x是每个组的数据框。足够公平
对于汇总:
df.groupby('day').agg(lambda x: print(x.shape))
out: (19,)
(87,)
(76,)
(62,)
(19,)
(87,)
(76,)
(62,)
(19,)
(87,)
(76,)
(62,)
(19,)
(87,)
(76,)
(62,)
(19,)
(87,)
(76,)
(62,)
(19,)
(87,)
(76,)
(62,)
因此,aggreagate遍历每个列和逐列的组。我明白了
我无法理解转换方法的功能。类似地打印类型我明白了
df.groupby('day').transform(lambda x: print(x.shape))
out:(19,)
(19,)
(19,)
(19,)
(19,)
(19,)
(19, 6)
(87,)
(87,)
(87,)
(87,)
(87,)
(87,)
(76,)
(76,)
(76,)
(76,)
(76,)
(76,)
(62,)
(62,)
(62,)
(62,)
(62,)
(62,)
如您所见,它遍历所有列的第一组,然后以某种方式在其中存在一个数据帧(19,6),然后它不再出现,并且迭代通常遍历所有组。请帮助我了解transform方法的作用