Проверить существующие значения в столбце на другой фрейм данных и добавить строки - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть 2 кадра данных, первый:

City      Country
-----------------
NY            US
LA            US
Paris         France
Roma          Italy

второй:

Place        Score         ID_ref
----------------------------------
Paris         +1            0010 
US            +5            1000
Italy         -8            3020

Вывод должен быть:

Place        Score            ID_ref
------------------------------------
Paris         +1            0010 
France        +1            0010 
US            +5            1000
LA            +5            1000
NY            +5            1000
Italy         -8            3020
Roma          -8            3020

Я хотелрешить эту проблему, выполнив двойной цикл, но первый кадр данных содержит 5 000 строк, а второй - 25 000.

Поэтому я не думаю, что двойной цикл - это лучшее, что можно сделать.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019

Попробуйте сначала объединить, а затем объединить следующим образом:

join1 = pd.merge(df, df1, left_on='Country', right_on='Place', how='left')
del join1['Place']
del join1['Country']
join1.columns = ['Place', 'Score', 'ID_ref']
result = join1.concat(df1)
0 голосов
/ 29 апреля 2019

Попробуйте, потому что вы объединяетесь в 'страну' или 'город':

df_out = pd.concat(
   [df_p.set_index(df_p['Country']).rename_axis('Place', axis=0).stack().reset_index().merge(df_2),
    df_p.set_index(df_p['City']).rename_axis('Place', axis=0).stack().reset_index().merge(df_2)],
   ignore_index=True).drop_duplicates()[['Place','Score','ID_ref']]
df_out['Location'] = df_out['Location'].fillna(df_out['Place'])
df_out = df_out[['Location','Score','ID_ref']]

df_out

Выход:

  Location  Score  ID_ref
0       NY      5    1000
1       US      5    1000
2       LA      5    1000
4     Roma     -8    3020
5    Italy     -8    3020
6    Paris      1      10
7    Paris      1      10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...