數據處理(三)高級部分數據聚合

高級數據聚合
可以使用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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章