/
Вопросы и ответы
/
Аналитика данных
/

Pandas как удалить пустые строки

Pandas как удалить пустые строки

4 года назад

Arthur Cheremisin

Ответы

0

Для удаления пустых строк из DataFrame в библиотеке Pandas можно использовать метод dropna(). Этот метод позволяет удалить строки, содержащие пропущенные значения (NaN) в указанных столбцах или во всех столбцах.

1
2
3
4
5
6
7
8
9
10
import pandas as pd

# Создаем исходный DataFrame
data = {'A': [1, 2, None, 4],
        'B': [None, 5, 6, 7],
        'C': [8, 9, 10, 11]}
df = pd.DataFrame(data)

# Удаление всех строк с пропущенными значениями
df_cleaned = df.dropna()

В результате выполнения данного кода будут удалены строки, в которых хотя бы одно значение равно NaN. Теперь DataFrame df_cleaned будет содержать только строки без пропущенных значений.

Если необходимо удалить только строки, в которых все значения равны NaN, то можно использовать параметр how='all':

1
2
# Удаление только строк, в которых все значения NaN
df_cleaned = df.dropna(how='all')

Также можно использовать параметр subset для указания столбцов, в которых нужно проверять наличие пропущенных значений:

1
2
# Удаление строк с пропущенными значениями только в столбцах 'A' и 'B'
df_cleaned = df.dropna(subset=['A', 'B'])

Теперь DataFrame df_cleaned будет содержать только строки, в которых значения в столбцах 'A' и 'B' не являются NaN.

2 года назад

Ivan Mamtsev

0

Строки с пропусками удаляет метод dropna():

1
2
3
4
5
6
7
8
9
10
11
import pandas as pd
import numpy as np

df = pd.DataFrame({
    'name': ['Анна', None, 'Олег', None],
    'city': ['Москва', 'Казань', None, None],
})

print(df.dropna())
#    name    city
# 0  Анна  Москва

По умолчанию dropna() удаляет строку, если пропуск есть хотя бы в одном столбце.

Только полностью пустые строки

1
2
3
4
5
print(df.dropna(how='all'))
#    name    city
# 0  Анна  Москва
# 1  None  Казань
# 2  Олег    None

Пропуски в определённых столбцах

1
df.dropna(subset=['name'])

Удалит строки, где нет имени, остальные пропуски оставит.

Строки, где заполнено меньше двух значений: df.dropna(thresh=2).

Сохранить результат

dropna() возвращает новую таблицу и не меняет исходную:

1
df = df.dropna()

После удаления в индексе останутся пропуски номеров. Перенумеровать строки: df = df.dropna().reset_index(drop=True).

Пустые строки, которые pandas не считает пропусками

Ячейки с '' или пробелами для pandas заполнены, и dropna() их не тронет. Сначала превратите их в NaN:

1
2
3
df = pd.DataFrame({'name': ['Анна', '', '  ', 'Олег']})
df = df.replace(r'^\s*$', np.nan, regex=True).dropna()
print(len(df))  # 2

Сколько пропусков в каждом столбце

1
print(df.isna().sum())

Перед удалением полезно проверить: если пропуски в одном столбце, проще удалить столбец или заполнить пропуски через fillna().

Удалить пустые столбцы

1
df.dropna(axis=1, how='all')

Очистку данных в pandas разбирают в курсе «Python для анализа данных».

18 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845