Заполнение нулей с другого датафрейма - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть два кадра данных, df1 и df2. Я хотел бы заполнить нулями в df2 на основе соответствующей записи в df1 с учетом уникального идентификатора (id). Ниже приведен код:

import pandas as pd
import numpy as np
df1 = pd.DataFrame({"id": [3,4,5,6,7,8,9],
                     "col1": ['mike', 'matt', 'mertha', 'peter', 'tabby', 'carl', 'brian'],
                     "col2": ['645-345', '645-333', '324-543', '123-432', '563-654', '324-123', '902-342'],
                     "col3": ['cat', 'cat','dog', 'none', 't-rex', 'goat', 'snake']})
df2 = pd.DataFrame({"id": [6, 6, 7, 7, 7, 8, 8, 9],
                    "col1": ['peter', 'peter', np.nan, np.nan, np.nan, np.nan, np.nan, np.nan],
                    "col2": ['324-123','324-123', '902-342', '902-332', '902-123', '556-786', '113-786', '901-345'],
                    "col3": ['none', 'none', np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]})

Для краткости, я не шучу, когда пытаюсь все под солнцем на этом сайте, и я не могу найти ответ. Любая помощь будет принята с благодарностью!

Отредактировано: Ожидаемый результат

Я бы хотел заполнить только значения col1 и col3 np.nan. None это просто еще один вариант. мой ожидаемый результат выглядит следующим образом:

df_merged = pd.DataFrame({"id": [6, 6, 7, 7, 7, 8, 8, 9],
                    "col1": ['peter', 'peter', 'tabby','tabby', 'tabby',  'carl','carl','brian'],
                    "col2": ['324-123','324-123', '902-342', '902-332', '902-123', '556-786', '113-786', '901-345'],
                    "col3": ['none', 'none', 't-rex', 't-rex', 't-rex', 'goat', 'goat', 'snake']})

1 Ответ

1 голос
/ 02 апреля 2020

Если id является индексом в обоих фреймах данных, тогда комментарий Эрфана должен работать. В противном случае:

(df2.set_index('id')
    .fillna(df1.set_index('id'))
    .reset_index()
)

Вывод:

   id   col1     col2   col3
0   6  peter  324-123   none
1   6  peter  324-123   none
2   7  tabby  902-342  t-rex
3   7  tabby  902-332  t-rex
4   7  tabby  902-123  t-rex
5   8   carl  556-786   goat
6   8   carl  113-786   goat
7   9  brian  901-345  snake
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...