У меня есть датафрейм с пропущенными значениями. мне нужно обновить отсутствующие значения двумя способами.
1. с того же кадра данных на основе последней даты и идентификатора.
2. с другого кадра данных на основе даты и идентификатора
df
id date name location type
11 08-05-2019 aim ind ss
12 08-05-2019 paul uk ee
11 08-04-2019 aim ee
13 08-05-2019 tera uk jj
13 08-01-2019 tera kk
15 08-09-2019 usa ii
15 08-05-2019 uk ii
13 08-05-2019 tera uk
ожидаемый результат, основанный на заполнении нанов с того же кадра данных на основе идентификатора и последней даты
df1
id date name location type
11 08-05-2019 aim ind ss
12 08-05-2019 paul uk ee
11 08-04-2019 aim ind ss
13 08-05-2019 tera uk jj
13 08-01-2019 tera uk kk
15 08-09-2019 usa ii
15 08-05-2019 uk ii
13 08-05-2019 tera uk jj
В df1 мне нужно заменить только значения nan из фрейма данных y на основе столбца даты и идентификатора.
y
id date name location type rev
11 08-05-2019 aim ind ss yes
12 08-05-2019 paul uk ee no
11 08-04-2019 aim ind ee yes
13 08-05-2019 tera uk jj yes
13 08-01-2019 tera uk kk yes
15 08-09-2019 sam usa ii no
15 08-05-2019 jim uk ii no
13 08-05-2019 tera uk kk no
14 09-05-2019 tiya uk kk yes
15 10-05-2019 tiya ind kk yes
Я пробовал этот код для 2-го варианта, но не работал точно.
y.set_index(['id','date']).combine_first(df1.set_index(['id','date'])).reset_index()
и
df, y = df.set_index('id','date'), y.set_index('id','date')
df.update(y)
df.reset_index(inplace=True)
но при получении многоиндексной ошибки
Я не смог получить df1 от df, поэтому напрямую пытался обновить df с помощью y
окончательный ожидаемый результат -
id date name location type
11 08-05-2019 aim ind ss
12 08-05-2019 paul uk ee
11 08-04-2019 aim ind ee
13 08-05-2019 tera uk jj
13 08-01-2019 tera uk kk
15 08-09-2019 sam usa ii
15 08-05-2019 jim uk ii
13 08-05-2019 tera uk kk