数据处理(三)高级部分数据聚合

高级数据聚合
可以使用pd.merge()函数包聚合操作的计算结果添加到df的每一行
df=DataFrame({'color':['red','green','red','blue','green'],
              'item':['pen','pencil','book','cup','watch'],
             'price1':np.random.rand(5),
             'price2':np.random.rand(5)})
df
#添加前缀total_
sums = df.groupby('color').sum().add_prefix('total_')
sums
指定左边的列为color
pd.merge(df,sums,left_on='color',right_index='True')
可以使用transform和apply实现相同功能
然后去除相同数据
sum2=df.groupby('color')['price1','price2'].transform(sum).add_prefix('total_')
sum2
sum3=df.groupby('color')['price1','price2'].apply(sum).add_prefix('total_')
sum3
transform()与apply()函数还能传入一个函数或者lambda
df = DataFrame({'color':['white','black','white','white','black','black'],
               'status':['up','up','down','down','down','up'],
               'value1':[12.33,14.55,22.34,27.84,23.40,18.33],
               'value2':[11.23,31.80,29.99,31.18,18.25,22.44]})
使用apply()+lambda实现聚合操作,自动生成一个多层索引对象
【注意】apply的操作对象,也就是传给lambda的参数是整列的数组

sum4=df.groupby('color')['price1','price2'].apply(lambda x:x.sum()).add_prefix('total_')
sum4

你可能感兴趣的:(数据处理(三)高级部分数据聚合)