Spec-Zone.ru › pandas 1

pandas.DataFrame.fillna

DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)[source]

Заполнение пропущенных значений NA/NaN указанным методом.

Параметры
value:скаляр, dict, Series или DataFrame

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

method:{‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, по умолчанию None

Метод для заполнения пропусков в переиндексированной Series pad / ffill: распространить последнее действительное наблюдение вперед до следующего действительного наблюдения backfill / bfill: использовать следующее действительное наблюдение для заполнения пробела.

axis:{0 или ‘index’, 1 или ‘columns’}

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

inplace:bool, по умолчанию False

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

limit:int, по умолчанию None

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

downcast:dict, по умолчанию None

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

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

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

См. также

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

Мы также можем распространять значения, отличные от нуля, вперед или назад.

>>> df.fillna(method="ffill")
     A    B   C    D
0  NaN  2.0 NaN  0.0
1  3.0  4.0 NaN  1.0
2  3.0  4.0 NaN  1.0
3  3.0  3.0 NaN  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.

© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/1.5.0/reference/api/pandas.DataFrame.fillna.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API