如何在Python中实现SAS风格的含重复键列内连接?
在Python中复现SAS内连接(Inner Merge)的问题
我正尝试在Python中复现SAS的*内连接(inner merge)*功能,但当连接键列存在重复值时,Python的内连接结果与SAS的不匹配。
以下是示例数据:
zw = pd.DataFrame({"ID":[1,0,0,1,0,0,1], "Name":['Shivansh','Shivansh','Shivansh','Amar','Arpit','Ranjeet','Priyanka'], "job_profile":['DataS','SWD','DataA','DataA','AndroidD','PythonD','fullstac'], "salary":[22,15,10,9,16,18,22], "city":['noida','bangalore','hyderabad','noida','pune','gurugram','bangalore'], "ant":[10,15,15,10,16,17,18]}) zw1 = pd.DataFrame({"ID-":[1,0,0,1,0,0,1], "Name":['Shivansh','Shivansh','Swati','Amar','Arpit','Ranjeet','Priyanka'], "job_profile_":['DataS','SWD','DataA','DataA','AndroidD','PythonD','fullstac'], "salary_":[2,15,10,9,16,18,22], "city_":['noida','kochi','hyderabad','noida','pune','gurugram','bangalore'], "ant_":[1,15,15,10,16,17,18]})
zw和zw1为输入表,需按Name列做内连接。问题在于两表的Name列存在重复值,Python会生成重复行的所有可能组合,与预期输出不符。我尝试了常规内连接并按Name、ID列去重,但仍未得到预期结果:
df1=pd.merge(zw,zw1,on=['Name'],how='inner') df1.drop_duplicates(['Name','ID'])
内容的提问来源于stack exchange,提问作者Shirin
相关产品推荐
相关产品推荐

