pandas.Series.fillna#

Series.fillna(value=None, *, method=None, axis=None, inplace=False, limit=None, downcast=)[источник]#

Заполнить значения NA/NaN с использованием указанного метода.

Параметры:
значениескаляр, словарь, Series или DataFrame

Значение для заполнения пропусков (например, 0), альтернативно dict/Series/DataFrame значений, указывающих, какое значение использовать для каждого индекса (для Series) или столбца (для DataFrame). Значения, отсутствующие в dict/Series/DataFrame, не будут заполнены. Это значение не может быть списком.

метод{'backfill', 'bfill', 'ffill', None}, по умолчанию None

Метод для заполнения пропусков в переиндексированных Series:

  • ffill: распространение последнего допустимого наблюдения вперед до следующего допустимого.

  • backfill / bfill: использовать следующее допустимое наблюдение для заполнения пропуска.

Устарело с версии 2.1.0: Используйте ffill или bfill вместо этого.

ось{0 или ‘index’} для Series, {0 или ‘index’, 1 или ‘columns’} для DataFrame

Ось, вдоль которой заполнять пропущенные значения. Для Series этот параметр не используется и по умолчанию равен 0.

inplacebool, по умолчанию False

Если True, заполнять на месте. Примечание: это изменит любые другие представления этого объекта (например, срез без копирования для столбца в DataFrame).

limitint, по умолчанию None

Если указан метод, это максимальное количество последовательных значений NaN для заполнения вперед/назад. Другими словами, если есть пробел с более чем этим количеством последовательных NaN, он будет заполнен только частично. Если метод не указан, это максимальное количество записей вдоль всей оси, где NaN будут заполнены. Должно быть больше 0, если не None.

downcastdict, по умолчанию None

Словарь элемент->тип данных для понижения типа, если возможно, или строка 'infer', которая попытается понизить тип до соответствующего равного типа (например, float64 до int64, если возможно).

Устарело с версии 2.2.0.

Возвращает:
Series/DataFrame или None

Объект с заполненными пропущенными значениями или None, если inplace=True.

Смотрите также

ffill

Заполнение значений путем распространения последнего допустимого наблюдения на следующее допустимое.

bfill

Заполнение значений с использованием следующего допустимого наблюдения для заполнения пробела.

interpolate

Заполните значения NaN с помощью интерполяции.

reindex

Привести объект к новому индексу.

asfreq

Преобразовать TimeSeries в указанную частоту.

Примеры

>>> df = pd.DataFrame([[np.nan, 2, np.nan, 0],
...                    [3, 4, np.nan, 1],
...                    [np.nan, np.nan, np.nan, np.nan],
...                    [np.nan, 3, np.nan, 4]],
...                   columns=list("ABCD"))
>>> df
     A    B   C    D
0  NaN  2.0 NaN  0.0
1  3.0  4.0 NaN  1.0
2  NaN  NaN NaN  NaN
3  NaN  3.0 NaN  4.0

Заменить все элементы NaN на 0.

>>> df.fillna(0)
     A    B    C    D
0  0.0  2.0  0.0  0.0
1  3.0  4.0  0.0  1.0
2  0.0  0.0  0.0  0.0
3  0.0  3.0  0.0  4.0

Заменить все элементы NaN в столбцах 'A', 'B', 'C' и 'D' на 0, 1, 2 и 3 соответственно.

>>> values = {"A": 0, "B": 1, "C": 2, "D": 3}
>>> df.fillna(value=values)
     A    B    C    D
0  0.0  2.0  2.0  0.0
1  3.0  4.0  2.0  1.0
2  0.0  1.0  2.0  3.0
3  0.0  3.0  2.0  4.0

Заменять только первый элемент NaN.

>>> df.fillna(value=values, limit=1)
     A    B    C    D
0  0.0  2.0  2.0  0.0
1  3.0  4.0  NaN  1.0
2  NaN  1.0  NaN  3.0
3  NaN  3.0  NaN  4.0

При заполнении с использованием DataFrame замена происходит по тем же именам столбцов и тем же индексам

>>> df2 = pd.DataFrame(np.zeros((4, 4)), columns=list("ABCE"))
>>> df.fillna(df2)
     A    B    C    D
0  0.0  2.0  0.0  0.0
1  3.0  4.0  0.0  1.0
2  0.0  0.0  0.0  NaN
3  0.0  3.0  0.0  4.0

Обратите внимание, что столбец D не затрагивается, так как он отсутствует в df2.