首页 > 解决方案 > 在数据框1的第1列和数据框2的第2列的基础上填充数据框1的第3列

问题描述

我有 2 个数据框 df1 和 df2。没有任何唯一值,并且它们的行数不同。df1:

| code_IATA  | code_ICAO | Time_Zone        |

| ASGE       | BSF       | Pacific          |

| BEMDF      | NHU       | America/New_york |

| JKL        | STF       | America/New_york |

df2:

| code_IATA  | code_ICAO | Time_Zone |

| ASGE       | BSF       | NAN       |

| BEMDF      | NHU       | NAN       |

| POW        | UFT       | NAN       |

| SHMS       | LNQ       | NAN       |

我想将 df1 的 Time_Zone 的值复制到 df2 的 Time_Zone 中,其中两列的 code_IATA 值都匹配。我尝试了 map, contains 并尝试使用 for 循环解决,但无法做到。

df2['Time_Zone '] = df2['code_IATA'].map(df1.set_index('code_IATA')['Time_Zone'])

我无法删除重复值,因为所有值对我都很重要,并且 df1 包含比 df2 更多的行。两个数据帧中的行数不相等。

希望,我解释得很好。

标签: pandasdataframeseries

解决方案


尝试DataFrame.merge

new_df=df1.merge(df2,on='code_IATA',how='right').reindex(columns=['code_IATA','code_ICAO_y','Time_Zone_x'])
new_df.columns=df1.columns
print(new_df)
  code_IATA code_ICAO         Time_Zone
0      ASGE       BSF           Pacific
1     BEMDF       NHU  America/New_york
2       POW       UFT               NaN
3      SHMS       LNQ               NaN

或使用:on=['code_IATA','code_ICAO']

df1.merge(df2,how='right',on=['code_IATA','code_ICAO']).drop('Time_Zone_y',axis=1)

推荐阅读