Заполнение столбца 3 информационного кадра 1 на основе столбца 1 информационного кадра 1 и столбца 2 информационного кадра 2 - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть 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       |

Я хочу скопировать значение Time_Zone для df1 в Time_Zone для df2, где значение code_IATA обоих столбцов совпадает. Я пробовал map, содержит и пытался разрешить цикл for, но не могу сделать.

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

Я не могу удалить дублирующиеся значения, потому что все значения важны для меня, и df1 содержит больше строк, чем df2,Количество строк в обоих кадрах не равно.

Надеюсь, я хорошо объясню.

1 Ответ

0 голосов
/ 07 ноября 2019

Попробуйте 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)
...