Заменить нулевые значения в кадре данных другим кадром данных - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть два кадра данных, и я хочу заменить нулевые значения на другой кадр данных для ключа (X) на how = 'left' (DF1). Большое вам спасибо.

DF1
X | Y
1 | a
2 | NaN
3 | c 

DF2
X | Y
1 | a 
2 | b
3 | NaN
4 | d

OUTPUT
X | Y
1 | a
2 | b
3 | c

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Вы можете создать словарь из строк df2 и использовать этот словарь с fillna :

import numpy as np
import pandas as pd

da1 = [[1, 'a'],
       [2, np.nan],
       [3, 'c']]

df1 = pd.DataFrame(data=da1, columns=['X', 'Y'])

da2 = [[1, 'a'],
       [2, 'b'],
       [3, np.nan],
       [4, 'd']]

df2 = pd.DataFrame(data=da2, columns=['X', 'Y'])

mapping = dict(zip(df2.X, df2.Y))
df1.Y = df1.Y.fillna(df1.X.map(mapping))
print(df1) 

выход

   X  Y
0  1  a
1  2  b
2  3  c
0 голосов
/ 01 ноября 2018

Используйте map с fillna как:

df1['Y'] = df1['X'].map(df2.set_index('X')['Y']).fillna(df1['Y'])

Или используя np.where как:

df1['Y'] = np.where(df1.Y.isnull(),df1['X'].map(df2.set_index('X')['Y']),df1['Y'])

print(df1)
   X  Y
0  1  a
1  2  b
2  3  c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...