python - 组合/合并具有重复名称的两个数据集
问题描述
我尝试合并两个数据集(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]})
我尝试过加入、合并和连接,但没有一个符合目的。我需要一个适用于更大数据的代码。如果有人可以提供帮助,我将不胜感激。
解决方案
一种方法是首先为您的初始 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
推荐阅读
- javascript - 我们是否*必须*使用 data: URIs (readAsDataURL)在 JavaScript中使用 File 对象?
- android - 当我从 navigation.xml 转换到其他片段时,RecyclerView 是空白的
- elasticsearch - 如何计算两个事件的发生,然后显示提升的百分比并在 kibana 中获取指标?
- android - 如何在不使用操作栏且没有任何物理按钮的情况下退出应用程序?
- oracle - 在 oracle 中使用 REGEXPR_SUBSTR 的模式匹配条件
- c - printf() 中的 %qu 格式代表什么
- javascript - JS 专注于超链接
- java - Spring boot 2 启用非安全 /health 端点
- sql-server - 查询统计满足特定条件的数据
- postgresql - 为什么索引会增加 postgres 中的执行时间?