Как заполнить пропущенные значения в подмножестве столбцов путем сопоставления значений в других столбцах? - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть датафрейм df1 = DataFrame({'col1':['a','b','a','c'], 'col2':[1,2,1,1],'col3':['e1','e2',np.nan,'e5'],'col4':[4,5,6,6]}). Я хотел бы заполнить пропущенные значения в col3 путем поиска значений / соответствующих значений в col1 и col2, чтобы получить следующий вывод:

col1 col2 col3 col4
a     1    e1   4 
b     2    e2   5 
a     1    e1   6 
c     1    e5   6 

где значения a и 1 в столбцах col1 и col2 возвращают e1 для col3

Ответы [ 2 ]

3 голосов
/ 07 апреля 2020

Что мы можем сделать, так это попробовать groupby с ffill

df1.fillna(df1.groupby(['col1','col2']).ffill(), inplace=True)
  col1  col2 col3  col4
0    a     1   e1     4
1    b     2   e2     5
2    a     1   e1     6
3    c     1   e5     6
2 голосов
/ 07 апреля 2020

Очень похожий подход к ответу YOBEN_S (который я предпочитаю), но с использованием fillna:

df.col3 = df.groupby(['col1', 'col2']).fillna(method='ffill').col3
...