Забегая вперед, interpolate
отлично работает:Панды интерполировать() в обратном dataframe
name days
0 a NaN
1 a NaN
2 a 2
3 a 3
4 a NaN
5 a NaN
records.loc[:, 'days'].interpolate(method='linear', inplace=True)
name days
0 a NaN
1 a NaN
2 a 2
3 a 3
4 a 4
5 a 5
... однако, он не решает начальные строки (только идет вперед). Параметр limit_direction
позволяет {‘forward’, ‘backward’, ‘both’}
. Ни одна из этих работ не работает. Есть ли подходящий способ интерполяции назад?
Мы можем предположить, что ряд, увеличивающий или уменьшающийся на 1, может не начинаться с 0, как это происходит в этом примере.
Ваш пример * (показаны 6 строк) *, как таковой не будет работать (значения будут оставаться такими же, как и последнее известное значение), поскольку «интерполяция» должна знать первое допустимое значение после «Nan», чтобы экстраполировать эти значения на основе измеряя разницу между строками, значения которых должны быть заполнены. Таким образом, линейная интерполяция лучше всего работает, когда вы указываете ее начальную и конечную точки, чтобы она могла хорошо сглаживать значения «NaN», которые она встречает на середине. –
Текущая версия панд (0.22), похоже, делает трюк с 'limit_direction = 'both''. Начальные и конечные значения «NaN» теперь ** дополняются **. –