我有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包含更多行。两个数据框中的行数不相等。
希望,我很好地解释了。
答案 0 :(得分:0)
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)