Ввести значение NaN на основе другого фрейма данных Python - PullRequest
3 голосов
/ 28 апреля 2019

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

DF1:

index  id  test
3      45   6.9
56     2    NA
1      789  8
29     12   4.7

DF2:

index  id  test
56     2    2.3

Результат:

index  id  test
3      45   6.9
56     2    2.3
1      789  8
29     12   4.7

Я пробовал это:

tempResult = pd.merge(DF1, DF2,on=id,how='outer',sort=False).set_index(DF1.index)

tempResult:

index  id  test_x  test_y
3      45   6.9    NA
56     2    NA     2.3
1      789  8      NA
29     12   4.7    NA

и затем мне нужно просмотреть все значения, поэтому я ищу более эффективный путь.

Есть предложения?

Ответы [ 2 ]

3 голосов
/ 28 апреля 2019

Если "index" на самом деле здесь DataFrame.index, то вы просто сможете использовать DataFrame.fillna:

df1.fillna(df2)

Если нет, затем, возможно, потребуется использовать set_index, например:

df1.set_index('index').fillna(df2.set_index('index'))

[out]

        id  test
index           
3       45   6.9
56       2   2.3
1      789   8.0
29      12   4.7
3 голосов
/ 28 апреля 2019

Использование combine_first()

print(df1.combine_first(df2))

        id  test
index           
1      789   8.0
3       45   6.9
29      12   4.7
56       2   2.3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...