Объединить два кадра данных с pandas по идентификатору - PullRequest
0 голосов
/ 20 января 2020

У меня есть два файла dataframes / csv, и я пытаюсь объединить их по идентификатору.

df1:

Dataframe1

df2:

Dataframe2

Я пытаюсь сделать это:

df3 = (pd.merge(df1, df2, left_on='leg_id', right_on='leg', how='inner'))

Я хочу увидеть все данные из df2, где id его id_leg на df1, и хочу увидеть также данные из df1, вероятно, он будет повторяться в каждом входе в df2, потому что его 1: M

Несколько советов?

1 Ответ

0 голосов
/ 20 января 2020

Использование слияния имеет такой недостаток, что в результате содержатся ( leg_id и leg ) (с одинаковым содержанием).

Возможно, лучшим вариантом будет:

  • Установить индекс в df1 на leg_id .
  • Установить индекс в df2 до leg .
  • Присоедините оба DataFrames (теперь по их индексам).

Пока у результата есть индекс (взят из leg_id и leg ), но без имени . Чтобы преобразовать его в «обычный» именованный столбец, вы можете:

  • переименовать индекс (например, в leg ).
  • сбросить индекс (фактически только эта операция превращает его в «обычный» столбец).

Код для этого:

df1.set_index('leg_id').join(df2.set_index('leg'), how='inner')\
    .rename_axis(index='leg').reset_index()

Преимущество этого решения по сравнению с слияние означает, что столбец индекса встречается только один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...