Использование «bfill» или «ffill» для элемента groupby является тривиальным, но что, если вам нужно заполнить na определенным значением во втором столбце на основе условие в третьей колонке?(pandas) Fill NaN на основе группового и столбцового условий
Например:
>>> df=pd.DataFrame({'date':['01/10/2017', '02/09/2017', '02/10/2016','01/10/2017', '01/11/2017', '02/10/2016'], 'a':[1,1,1,2,2,2], 'b':[4,np.nan,6, 5, np.nan, 7]})
>>> df
a b date
0 1 4.0 01/10/2017
1 1 NaN 02/09/2017
2 1 6.0 02/10/2016
3 2 5.0 01/10/2017
4 2 NaN 01/11/2017
5 2 7.0 02/10/2016
мне нужно группы по столбцу «а», и заполнить NaN со значением столбца «B», где дата для этой строки ближе всего к дате в строке NaN ,
Так вывод должен выглядеть следующим образом:
a b date
0 1 4.0 01/10/2017
1 1 6.0 02/09/2017
2 1 6.0 02/10/2016
3 2 5.0 01/10/2017
4 2 5.0 01/11/2017
5 2 7.0 02/10/2016
Предположим, что существует функция closest_date(), который принимает дату NaN и список других дат в этой группе, и возвращает ближайшую дату.
Я пытаюсь найти чистое решение, которое не требует итерации по строкам, идеально подходящее для использования apply() с lambdas. Есть идеи?
Ваши данные, кажется неправильным. Для группы 'a == 1' вы выбрали' 6' для заполнения 'nan'. Однако, похоже, что '01/10/2017' ближе к' 02/09/2017', подразумевая, что '4' должно было быть значением заполнения. – piRSquared