TransWikia.com

Почему не пропадают значения после применения .dropna()?

Stack Overflow на русском Asked by Dmitrii Trubetskoy on December 26, 2020

У меня в фрейме данных есть колонки с нулевыми значениями. Когда я делаю:

df.isnull().sum()

в списке колонок я наблюдаю следущее:

open_acc                  0
pub_rec                   0
pub_rec_bankruptcies    535
purpose                   0
revol_bal                 0
revol_util              276
sub_grade                 0
term                      0

Нужно убрать эти ряды, таким образом я делаю:

df['revol_util'].dropna()
df['pub_rec_bankruptcies'].dropna()

Однако, после этого ситуация не меняется, хотя и ошибки тоже никакой не выдается.

One Answer

Большинство методов в Pandas создают новый объект (видоизмененную копию) и возвращают этот новый объект, не изменяя при этом оригинальный объект (DataFrame, Series, etc.). Иногда можно воспользоваться параметром inplace=True, для того чтобы изменить исходный объект вместо того, чтобы возвращать новый. Но в английской версии SO мне как то попался комментарий одного из основных разработчиков Pandas (Jeff Reback), что он сам предпочитает не использовать параметром inplace=True, т.к. в глубинах имплементации нет гарантии, что изменения будут сделаны на оригинальном объекте. Вместо этого часто происходит неявное создание нового объекта и замена оригинального обхекта новым. К сожалению, я не смог найти этот комментарий...

Метод DataFrame.dropna() по умолчанию возвращает новый фрейм (видоизменённую копию), но не меняет исходный фрейм.

Попробуйте так:

res = df.dropna(subset=['pub_rec_bankruptcies', 'revol_util'])

Correct answer by MaxU on December 26, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP