为了账号安全,请及时绑定邮箱和手机立即绑定

组合/合并具有重复名称的两个数据集

组合/合并具有重复名称的两个数据集

慕田峪4524236 2022-06-28 10:02:21
我尝试合并两个数据集(DataFrames),如下所示:D1 = pd.DataFrame({'Village':['Ampil','Ampil','Ampil','Bachey','Bachey','Center','Center','Center','Center'], 'Code':[123,324,190,453,321,786,456,234,987]})D2 = pd.DataFrame({'Village':['Ampil','Ampil','Bachey','Bachey','Center','Center'],'Lat':[11.563,13.278,12.637,11.356,12.736,13.456], 'Long':[102.234,103.432,105.673,103.539,103.873,102.983]})我想根据 Village 列合并两者。我希望输出如下所示:D3 = pd.DataFrame({'Village': ['Ampil','Ampil','Bachey','Bachey','Center','Center'],'Code':[123,324,453,321,786,456],'Lat':[11.563,13.278,12.637,11.356,12.736,13.456], 'Long':[102.234,103.432,105.673,103.539,103.873,102.983]})我尝试过加入、合并和连接,但没有一个符合目的。我需要一个适用于更大数据的代码。如果有人可以提供帮助,我将不胜感激。
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

一种方法是首先为您的初始 dfs 创建一个正在运行的 cumcount Village,然后由两者合并Village和count:


df1['count'] = df1.groupby('Village').cumcount()

df2["count"] = df2.groupby('Village').cumcount()


print (df2.merge(df1,on=["Village","count"],how="left").drop("count",axis=1))


#

      Village     Lat     Long  Code

0   Ampil  11.563  102.234   123

1   Ampil  13.278  103.432   324

2  Bachey  12.637  105.673   453

3  Bachey  11.356  103.539   321

4  Center  12.736  103.873   786

5  Center  13.456  102.983   456


查看完整回答
反对 回复 2022-06-28
  • 1 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号