python - 如果一列包含另一个值,我将如何组合两个熊猫数据框
问题描述
所以我有两个数据框:
df1:
ID Location Project_Code
1 New York City NY 674539
2 Atlantic City NJ 76538902
3 Orange County CA 27476391
4 Atlantic City NJ 82727637376
5 Atlanta GA 82727637376
df2:
Project_ID Location_City Project_Code
1 New York 674539
2 Atlantic City 76538902
3 Atlantic City 82727637376
4 Orange County 27476391
5 Atlanta 82727637376
我需要结合基于 df1.Location 和 df2.Location_City 以及 df1.Project_Code 和 df2.Project_Code 的两个 df。
我在加入时遇到的问题是项目代码和位置重复,唯一区分自己的方法是同时加入位置和项目代码。我遇到的另一个问题是,来自 df1 的 Location 和来自 df2 的 Location_City,它们有额外的字符(在这种情况下是状态)我想知道是否有一种方法可以将 location 和 location_city 合并到为什么它们被读取如果该位置包含来自位置城市的值,则该位置与位置城市匹配。
基本上,我如何才能将纽约之类的东西读作纽约
解决方案
您可以在清理 df1 中的位置后与 left_on 和 right_on 合并:
df1['Location'] = df1['Location'].str.split(',')[0]
df1.merge(df2,
left_on=['Location', 'Project_Code'],
right_on=['Location_City', 'Project_Code'],
how='left',
suffixes=['_df1', '_df2'])
推荐阅读
- python - 如何动态创建包含 N 个元素的字典?
- chapel - Fortran 的教堂模拟做循环增量?
- python - python中的布尔递归
- mongodb - mongodb 通过查询字段只返回子文档
- .net - 整个 WPF ListView 中的内部网格线
- java - 响应消息:java.sql.SQLException:无法转换为内部表示:jmeter
- java - 我的导航栏上的第一个图标是蓝色的,并且比其他图标大,我该如何更改?
- python - 线程比多个笔记本慢
- distributed-computing - 有没有办法将区块链账本副本相对化?
- javascript - Three.js:父级旋转的 LookAt