У меня есть две таблицы 1.Table_A 2.Table_B Я хотел бы обновить table_A определенный столбец, используя новые значения table_B для этого столбца, может случиться так, что количество строк из Table_A не соответствует Table_B. Я знаю, как написать запрос на обновление Table_A с помощью SQL, но не уверен, как мне это сделать в пандах, мне нужен эквивалент запроса на обновление в пандах

Обновить запрос:

update table_A
    set dt_of_join = sq.dt_of_join
    from (select id_emp, max(joining) as dt_of_join
            from table_B 
            group by id_emp ) as sq
    where table_A.id_emp = sq.id_emp

Мне нужен эквивалент вышеупомянутого запроса в Pandas Dataframe, любая помощь действительно приветствуется.

Пример :

Table_A
id_emp    |   dt_of_join     
  2       |   30-03-2018
  4       |   03-04-2018
  5       |   04-05-2018
  7       |   10-06-2018
  12      |   20-07-2018
  10      |   09-08-2018
  19      |   25-12-2018

Таблица B - это подзапрос, который находится внутри вышеуказанного запроса

Table_B
 id_emp   |   dt_of_join
   4      |    01-01-2019
   12     |    03-02-2019
   10     |    09-05-2019
   5      |    21-06-2019

После успешного запроса на обновление таблица table_A должна выглядеть следующим образом

Table_A
id_emp    |   dt_of_join     
  2       |   30-03-2018
  4       |   01-01-2019
  5       |   21-06-2019
  7       |   10-06-2018
  12      |   03-02-2019
  10      |   09-05-2019
  19      |   25-12-2018
3
RAHUL VISHWAKARMA 4 Июл 2019 в 06:32

2 ответа

Лучший ответ

Почему бы не reindex:

>>> df['dt_of_join'] = df2.set_index('id_emp').reindex(df['id_emp']).reset_index()['dt_of_join'].fillna(df['dt_of_join'])
>>> df
   id_emp  dt_of_join
0       2  30-03-2018
1       4  01-01-2019
2       5  21-06-2019
3       7  10-06-2018
4      12  03-02-2019
5      10  09-05-2019
6      19  25-12-2018
>>> 
1
U10-Forward 4 Июл 2019 в 11:05

Рассмотрите DataFrame.update после настройки. emp_id как индекс в обоих.

final_df = (tbl1_df.set_index('id_emp')
                   .update(tbl2_df.set_index('id_emp'))
           )
0
Parfait 4 Июл 2019 в 12:07