根据数据框1的列1和数据框2的列2填充数据框1的列3

时间:2019-11-07 18:17:08

标签: pandas dataframe series

我有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的值复制到两列的code_IATA值都匹配的df2的Time_Zone中。 我尝试了map,contains,并尝试使用for循环进行解析,但无法执行。

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

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

希望,我很好地解释了。

1 个答案:

答案 0 :(得分:0)

尝试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)