Python自定义聚合函数merge与transform区别详解
1.自定义聚合函数,结合agg使用
2.同时使用多个聚合函数
3.指定某一列使用某些聚合函数
4.merge与transform使用
importpandasaspd
importnumpyasnp
np.random.seed(1)
dict_data={
'k1':['a','b','c','d','a','b','c','d'],
'k2':['A','B','C','D','A','B','C','D'],
'data1':np.random.randint(1,10,8),
'data2':np.random.randint(1,10,8)
}
df=pd.DataFrame(dict_data)
print('df=\n',df)
df2=df.groupby('k1').sum()
#df2=df.sum()
print("df.groupby('k1').sum()\n",df2)
#使用聚合函数
defcus(df):
returndf.max()-df.min()
#默认列索引为列名。元组第0个元素‘Max',‘mu_cus'为自定义列名称,第一个元素为聚合函数名称
print("使用聚合函数1\n",df.groupby('k1').agg(['sum',('Max','max'),('mu_cus',cus)]))
#制定某一列使用某个聚合函数,元组不能用来重命名列名了,元组里面的函数,表示这一列将会执行的聚合函数
print("使用聚合函数2\n",df.groupby('k1').agg({'data1':('min','max'),'data2':'min'}))
df3=df.groupby('k1').sum().add_prefix('sum_')
print('df3=\n',df3)
#如果不使用add_prefix('sum_'),那么在merge时候data1余data2列名相同,会被自动重命名
print('merge=\n',pd.merge(df,df3,on='k1'))
transform_df=df.groupby('k1').transform(np.sum).add_prefix('sum_')
print(transform_df)
df[transform_df.columns]=transform_df#transform_df.columnsIndex(['sum_k2','sum_data1','sum_data2'],dtype='object')
#df[transform_df.columns.values]=transform_df#等价,#transform_df.columns.values['sum_k2','sum_data1','sum_data2']
print(df)exit()
结果
df=
k1k2data1data2
0aA63
1bB95
2cC66
3dD13
4aA15
5bB23
6cC85
7dD78
df.groupby('k1').sum()
data1data2
k1
a78
b118
c1411
d811
使用聚合函数1
data1data2
sumMaxmu_cussumMaxmu_cus
k1
a765852
b1197852
c14821161
d8761185
使用聚合函数2
data1data2
minmaxmin
k1
a163
b293
c685
d173
df3=
sum_data1sum_data2
k1
a78
b118
c1411
d811
merge=
k1k2data1data2sum_data1sum_data2
0aA6378
1aA1578
2bB95118
3bB23118
4cC661411
5cC851411
6dD13811
7dD78811
sum_k2sum_data1sum_data2
0AA78
1BB118
2CC1411
3DD811
4AA78
5BB118
6CC1411
7DD811
k1k2data1data2sum_k2sum_data1sum_data2
0aA63AA78
1bB95BB118
2cC66CC1411
3dD13DD811
4aA15AA78
5bB23BB118
6cC85CC1411
7dD78DD811
Processfinishedwithexitcode0
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
热门推荐
10 小红书平安祝福语简短
11 生日祝福语大全女孩简短
12 收生日红包祝福语 简短
13 领证幽默祝福语简短
14 法考面试祝福语简短
15 老哥出门祝福语简短语
16 送灯祝福语简短独特
17 幼儿狗年祝福语大全简短
18 好听的元旦简短祝福语