pandas.core.groupby.DataFrameGroupBy.fillna#

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

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

Устарело с версии 2.2.0: Этот метод устарел и будет удалён в будущей версии. Используйте DataFrameGroupBy.ffill() или DataFrameGroupBy.bfill() для заполнения вперёд или назад. Если вы хотите заполнить одним значением, используйте DataFrame.fillna() вместо этого.

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

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

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

Метод для заполнения пропусков. 'ffill' будет распространять последнее допустимое наблюдение вперёд внутри группы. 'bfill' будет использовать следующее допустимое наблюдение для заполнения пробела.

ось{0 или ‘index’, 1 или ‘columns’}

Ось, вдоль которой заполнять пропущенные значения. Когда DataFrameGroupBy axis аргумент является 0, используя axis=1 здесь будет давать такие же результаты, как DataFrame.fillna(). Когда DataFrameGroupBy axis аргумент является 1, используя axis=0 или axis=1 здесь даст те же результаты.

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

Сломан. Не устанавливайте в True.

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

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

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

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

Возвращает:
DataFrame

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

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

ffill

Прямое заполнение значений внутри группы.

bfill

Обратное заполнение значений внутри группы.

Примеры

>>> df = pd.DataFrame(
...     {
...         "key": [0, 0, 1, 1, 1],
...         "A": [np.nan, 2, np.nan, 3, np.nan],
...         "B": [2, 3, np.nan, np.nan, np.nan],
...         "C": [np.nan, np.nan, 2, np.nan, np.nan],
...     }
... )
>>> df
   key    A    B   C
0    0  NaN  2.0 NaN
1    0  2.0  3.0 NaN
2    1  NaN  NaN 2.0
3    1  3.0  NaN NaN
4    1  NaN  NaN NaN

Распространение ненулевых значений вперёд или назад внутри каждой группы по столбцам.

>>> df.groupby("key").fillna(method="ffill")
     A    B   C
0  NaN  2.0 NaN
1  2.0  3.0 NaN
2  NaN  NaN 2.0
3  3.0  NaN 2.0
4  3.0  NaN 2.0
>>> df.groupby("key").fillna(method="bfill")
     A    B   C
0  2.0  2.0 NaN
1  2.0  3.0 NaN
2  3.0  NaN 2.0
3  3.0  NaN NaN
4  NaN  NaN NaN

Распространение ненулевых значений вперед или назад внутри каждой группы вдоль строк.

>>> df.T.groupby(np.array([0, 0, 1, 1])).fillna(method="ffill").T
   key    A    B    C
0  0.0  0.0  2.0  2.0
1  0.0  2.0  3.0  3.0
2  1.0  1.0  NaN  2.0
3  1.0  3.0  NaN  NaN
4  1.0  1.0  NaN  NaN
>>> df.T.groupby(np.array([0, 0, 1, 1])).fillna(method="bfill").T
   key    A    B    C
0  0.0  NaN  2.0  NaN
1  0.0  2.0  3.0  NaN
2  1.0  NaN  2.0  2.0
3  1.0  3.0  NaN  NaN
4  1.0  NaN  NaN  NaN

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

>>> df.groupby("key").fillna(method="ffill", limit=1)
     A    B    C
0  NaN  2.0  NaN
1  2.0  3.0  NaN
2  NaN  NaN  2.0
3  3.0  NaN  2.0
4  3.0  NaN  NaN