22

Удаление столбца из DataFrame в Pandas

32

Проблема удаления столбца в DataFrame:

Я пытаюсь удалить столбец из DataFrame и успешно использую следующий код:

del df['column_name']

Однако, почему у меня не получается выполнить удаление с помощью следующей команды?

del df.column_name

Я ожидаю, что это сработает, так как я могу получить доступ к Series через df.column_name. В чем может быть проблема?

5 ответ(ов)

13

Как вы и предположили, правильный синтаксис будет следующим:

del df['column_name']

Заставить del df.column_name работать сложно из-за синтаксических ограничений в Python. Внутренне del df[name] преобразуется в df.__delitem__(name), что и является причиной такой проблемы.

3

Чтобы удалить одну или несколько колонок из 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

Начиная с версии 0.16.1, вы можете использовать следующий код для удаления колонок из DataFrame:

df.drop(['column_name'], axis=1, inplace=True, errors='ignore')

При использовании параметра errors='ignore', если указанная колонка не существует, это не вызовет ошибку, что делает код более устойчивым к подобным ситуациям.

0

Использование квадратной нотации [] для доступа к столбцам 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 вызывает ошибку синтаксиса. Поэтому рекомендуется всегда использовать квадратные скобки для доступа к столбцам, чтобы избежать подобных проблем.

0

Вы можете использовать следующий код, чтобы удалить столбец из 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.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь