本文主要是介绍pandas27 merge(数据库风格合并validate参数实例)( tcy),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
# 实例5.1:validate检查重复键left = pd.DataFrame({'A' : [11,12], 'B' : [13, 13]}) #B列重复数字
right = pd.DataFrame({'A' : [14,15,16], 'B': [13,13,13]}) #B列重复数字
left1 = pd.DataFrame({'A' : [11,12], 'B' : [13, 14]}) #B列无重复数字
right1 = pd.DataFrame({'A' : [14,15,16], 'B': [17,18,19]}) #B列无重复数字
left2 = pd.DataFrame({'A' : [11,12], 'B' : [13, 14]}) #B列无重复数字
right2 = pd.DataFrame({'A' : [14,15,16], 'B': [13,13,13]}) #B列重复数字result=pd.merge(left, right, on='B', how='outer') #结果等价下面
result=pd.merge(left, right, on='B', how='outer', validate="m:m")
result1=pd.merge(left1, right1, on='B', how='outer')
result0 = pd.merge(left, right, on='B', how='outer',validate="one_to_one") #错误:左侧和右侧B列都有重复值不是一对一合并
result2=pd.merge(left2, right2, on='B', how='outer',validate="one_to_many") #左侧B列无重复值,右侧B列有重复值1:m# left left1 left2A B A B A B
0 11 13 0 11 13 0 11 13
1 12 13 1 12 14 1 12 14# right right1 right2A B A B A B
0 14 13 0 14 17 0 14 13
1 15 13 1 15 18 1 15 13
2 16 13 2 16 19 2 16 13# result result1对比组 result2 1:mA_x B A_y A_x B A_y A_x B A_y
0 11 13 14 0 11.0 13 NaN 0 11 13 14.0
1 11 13 15 1 12.0 14 NaN 1 11 13 15.0
2 11 13 16 2 NaN 17 14.0 2 11 13 16.0
3 12 13 14 3 NaN 18 15.0 3 12 14 NaN
4 12 13 15 4 NaN 19 16.0
5 12 13 16#result1在列上有重复值导致返回数据数量是行维度的乘法,易导致内存溢出;
#在合并前应考虑重复值问题# 实例5.2:正确应用 - 指定唯一值
left = pd.DataFrame({'no':[11,12,13],'name' : ['Tom','Jim','Jim'], 'age' : [13, 13,14]})
right = pd.DataFrame({'no' : [11,12,13], 'weight': [30,40,40]})
pd.merge(left, right, on='B', how='outer', validate="1:1")#no为唯一值no name age weight
0 11 Tom 13 30
1 12 Jim 13 40
2 13 Jim 14 40
这篇关于pandas27 merge(数据库风格合并validate参数实例)( tcy)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!