Удаление столбца из DataFrame в Pandas
Проблема удаления столбца в DataFrame:
Я пытаюсь удалить столбец из DataFrame и успешно использую следующий код:
del df['column_name']
Однако, почему у меня не получается выполнить удаление с помощью следующей команды?
del df.column_name
Я ожидаю, что это сработает, так как я могу получить доступ к Series через df.column_name
. В чем может быть проблема?
5 ответ(ов)
Как вы и предположили, правильный синтаксис будет следующим:
del df['column_name']
Заставить del df.column_name
работать сложно из-за синтаксических ограничений в Python. Внутренне del df[name]
преобразуется в df.__delitem__(name)
, что и является причиной такой проблемы.
Чтобы удалить одну или несколько колонок из DataFrame в pandas, вы можете использовать следующий код:
columns = ['Col1', 'Col2', ...]
df.drop(columns, inplace=True, axis=1)
Этот код удалит указанные колонки непосредственно в исходном DataFrame. Обратите внимание, что параметр inplace=True
был добавлен в pandas начиная с версии 0.13, и в более старых версиях этот метод не будет работать. В таком случае вам нужно будет присвоить результат обратно в DataFrame:
df = df.drop(columns, axis=1)
Убедитесь, что ваша версия pandas поддерживает inplace=True
, иначе используйте второй вариант.
Начиная с версии 0.16.1, вы можете использовать следующий код для удаления колонок из DataFrame:
df.drop(['column_name'], axis=1, inplace=True, errors='ignore')
При использовании параметра errors='ignore'
, если указанная колонка не существует, это не вызовет ошибку, что делает код более устойчивым к подобным ситуациям.
Использование квадратной нотации []
для доступа к столбцам DataFrame в pandas — это хорошая практика. Одной из причин является то, что нотация с точкой (df.column_name
) не работает для индексированных столбцов, которые имеют числовые имена.
В качестве примера:
In [1]: df = DataFrame([[1, 2, 3], [4, 5, 6]])
In [2]: df[1]
Out[2]:
0 2
1 5
Name: 1
In [3]: df.1
File "<ipython-input-3-e4803c0d1066>", line 1
df.1
^
SyntaxError: invalid syntax
Как видно из примера, использование df[1]
успешно возвращает данные из второго столбца, в то время как попытка использовать df.1
вызывает ошибку синтаксиса. Поэтому рекомендуется всегда использовать квадратные скобки для доступа к столбцам, чтобы избежать подобных проблем.
Вы можете использовать следующий код, чтобы удалить столбец из DataFrame на Python с помощью библиотеки Pandas:
df.drop('columnname', axis=1, inplace=True)
Также можно воспользоваться следующим вариантом:
del df['colname']
Для удаления нескольких столбцов на основе их индексов вы можете использовать:
df.drop(df.iloc[:, 1:3], axis=1, inplace=True)
Если вы хотите удалить несколько столбцов по их именам, воспользуйтесь следующим кодом:
df.drop(['col1', 'col2', ..., 'coln'], axis=1, inplace=True)
Эти методы эффективно удаляют столбцы из вашего DataFrame.
Переименование названий столбцов в Pandas
"Красивая печать всей Series / DataFrame в Pandas"
Запись DataFrame pandas в CSV файл
Преобразование списка словарей в DataFrame pandas
Объединение двух столбцов текста в DataFrame pandas