![33eab9163ad7ecf53c2671553a1292c3.png](https://i-blog.csdnimg.cn/blog_migrate/9682327324eb5c0312a87d40062ce674.jpeg)
python聚合只不过是分组运算的其中一种而已。它是数据转换的一个特例,也就是说,它接受能够将一维数组简化为标量值的函数。其中,transform和apply方法,它们能够执行更多其他的分组运算。
In [106]: pd.merge(df,k1_means,left_on='key1',right_index=True)Out[106]: data1 data2 key1 key2 mean_data1 mean_data20 1.044009 0.965138 a one -0.250431 0.3573741 -1.255855 0.459189 a two -0.250431 0.3573744 -0.539447 -0.352206 a one -0.250431 0.3573742 0.593060 0.379310 b one -0.742433 0.7716833 -2.077925 1.164057 b two -0.742433 0.771683
字段名前缀:add_prefix()
In [106]: pd.merge(df,k1_means,left_on='key1',right_index=True)Out[106]: data1 data2 key1 key2 mean_data1 mean_data20 1.044009 0.965138 a one -0.250431 0.3573741 -1.255855 0.459189 a two -0.250431 0.3573744 -0.539447 -0.352206 a one -0.250431 0.3573742 0.593060 0.379310 b one -0.742433 0.7716833 -2.077925 1.164057 b two -0.742433 0.771683
合并数据集
In [106]: pd.merge(df,k1_means,left_on='key1',right_index=True)Out[106]: data1 data2 key1 key2 mean_data1 mean_data20 1.044009 0.965138 a one -0.250431 0.3573741 -1.255855 0.459189 a two -0.250431 0.3573744 -0.539447 -0.352206 a one -0.250431 0.3573742 0.593060 0.379310 b one -0.742433 0.7716833 -2.077925 1.164057 b two -0.742433 0.771683
transform方法
![cdd7bed5a179ac2717875a84fda816b8.png](https://i-blog.csdnimg.cn/blog_migrate/04195c12fc427b5142ce63e3b3a6c990.jpeg)
不难看出,transform会将一个函数应用到各个分组,然后将结果放置到适当的位置上。结果各分组产生的是一个标量值,则该值就会被广播出去。现在,假设你希望从各组中减去平均值。为此,我们先创建一个距平化函数(demeaning function),然后将其传给transform。
距平化函数
![d5d808551006fd4eeaf4899137068b75.png](https://i-blog.csdnimg.cn/blog_migrate/7dfcd9536a2d653988b3d40eeb5cd432.jpeg)
可以检查一下demeaned现在的分组平均值是否为0:
In [115]: demeaned.groupby(key).mean()Out[115]: a b c d eone 0.000000e+00 5.551115e-17 5.551115e-17 1.480297e-16 0.0two 1.387779e-17 0.000000e+00 0.000000e+00 0.000000e+00 0.0
分组距平化操作还可以通过apply实现。
python好书推荐
推荐一本python好书,初学者必备,小编已读,