首页 > 解决方案 > 如果一列包含另一个值,我将如何组合两个熊猫数据框

问题描述

所以我有两个数据框:

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 合并到为什么它们被读取如果该位置包含来自位置城市的值,则该位置与位置城市匹配。

基本上,我如何才能将纽约之类的东西读作纽约

标签: pythonpandasdataframe

解决方案


您可以在清理 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'])

推荐阅读