通过pandas的groupby方法,我们可以获得按组聚类后的各种方法等(count/sum/mean/median/std/var/min/max)
常用的方法为:
sku_tot_vol = data['unuseble_volume'].groupby([data.sku,data.location_code,data.unuseble_volume]).sum()
或者
df.groupby(['warehouse_code', 'storehouse_code','zone_use','packaging_attr','location_code','sku'])['total_quantity'].sum()
需要筛选的字段可前可后
这时候形成的数据形式是:Series。
然鹅,很多时候我们需要把聚合后的结果与原有的DataFrame数据结合,那如何操作呢?
1.将sku_tot_vol转化为DataFrame格式的数据
Sku_tot_vol = pd.DataFrame(sku_tot_vol)
2.更新列名,因为形成的DataFrame数据没有列名
Sku_tot_vol.reset_index(inplace= True)
Sku_tot_vol = Sku_tot_vol.rename(columns={'sku_vol':'unuseble_volume'})
3.将此数据与result数据进行结合。结合的方式可以选择inner或者outer join,连接的主键在on中说明,这个写法和SQL类似
Sku_tot_vol = Sku_tot_vol.rename(columns={'sku_vol':'unuseble_volume'})
result = pd.merge(result,Sku_tot_vol,on =['location_code','warehouse_code','storehouse_code','zone_use'],how='left')
以上,数据聚合就完成了