Как удалить столбцы в Pandas (4 примера)
Вы можете использовать функцию drop() , чтобы удалить один или несколько столбцов из кадра данных pandas:
#drop one column by name df.drop('column_name', axis= 1 , inplace= True ) #drop multiple columns by name df.drop(['column_name1', 'column_name2'], axis= 1 , inplace= True ) #drop one column by index df.drop (df.columns [[0]], axis= 1 , inplace= True ) #drop multiple columns by index df.drop (df.columns[[0,2,5]], axis= 1 , inplace= True )
Обратите внимание на следующее:
- Аргумент оси указывает, следует ли удалить строки (0) или столбцы (1).
- Аргумент inplace указывает, что столбцы должны быть удалены без переназначения DataFrame.
В следующих примерах показано, как использовать эту функцию на практике со следующими пандами DataFrame:
import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame df A B C 0 25 5 11 1 12 7 8 2 15 7 10 3 14 9 6 4 19 12 6 5 23 9 5 6 25 9 9 7 29 4 12
Пример 1. Удаление одного столбца по имени
В следующем коде показано, как удалить один столбец из DataFrame по имени:
#drop column named 'B' from DataFrame df.drop('B', axis= 1 , inplace= True ) #view DataFrame df A C 0 25 11 1 12 8 2 15 10 3 14 6 4 19 6 5 23 5 6 25 9 7 29 12
Пример 2. Удаление нескольких столбцов по имени
В следующем коде показано, как удалить несколько столбцов по имени:
#drop columns 'A' and 'C' from DataFrame df.drop(['A', 'C'], axis= 1 , inplace= True ) #view DataFrame df B 0 5 1 7 2 7 3 9 4 12 5 9 6 9 7 4
Пример 3. Удаление одного столбца по индексу
В следующем коде показано, как удалить один столбец по индексу:
#drop first column from DataFrame df.drop (df.columns [[0]], axis= 1 , inplace= True ) #view DataFrame df B C 0 5 11 1 7 8 2 7 10 3 9 6 4 12 6 5 9 5 6 9 9 7 4 12
Пример 4. Удаление нескольких столбцов по индексу
В следующем коде показано, как удалить несколько столбцов по индексу:
#drop multiple columns from DataFrame df.drop (df.columns [[0, 1]], axis= 1 , inplace= True ) #view DataFrame df C 0 11 1 8 2 10 3 6 4 6 5 5 6 9 7 12
Как удалить первый столбец в Pandas DataFrame(3 метода)
Вы можете использовать один из следующих трех методов, чтобы удалить первый столбец в pandas DataFrame:
Способ 1: Используйте дроп
df.drop (columns=df.columns [0], axis= 1 , inplace= True )
Способ 2: использовать iloc
df = df.iloc [: , 1:]
Способ 3: Используйте del
del df[df.columns [0]]
Каждый метод дает один и тот же результат.
В следующих примерах показано, как использовать каждый метод на практике со следующими пандами DataFrame:
import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame df team position assists rebounds 0 A G 5 11 1 A G 7 8 2 A F 7 10 3 A F 9 6 4 B G 12 6 5 B G 9 5 6 B F 9 9 7 B F 4 12
Способ 1: Используйте дроп
В следующем коде показано, как использовать функцию drop() для удаления первого столбца кадра данных pandas:
#drop first column of DataFrame df.drop (columns=df.columns [0], axis= 1 , inplace= True ) #view updated DataFrame df position assists rebounds 0 G 5 11 1 G 7 8 2 F 7 10 3 F 9 6 4 G 12 6 5 G 9 5 6 F 9 9 7 F 4 12
Обратите внимание, что первый столбец под названием «команда» был удален из DataFrame.
Также обратите внимание, что мы должны использовать inplace=True для удаления столбца в исходном DataFrame.
Способ 2: использовать iloc
В следующем коде показано, как использовать функцию iloc для удаления первого столбца кадра данных pandas:
#drop first column of DataFrame df = df.iloc [: , 1:] #view updated DataFrame df position assists rebounds 0 G 5 11 1 G 7 8 2 F 7 10 3 F 9 6 4 G 12 6 5 G 9 5 6 F 9 9 7 F 4 12
Обратите внимание, что первый столбец под названием «команда» был удален из DataFrame.
Способ 3: Используйте del
В следующем коде показано, как использовать функцию del для удаления первого столбца кадра данных pandas:
#drop first column of DataFrame del df[df.columns [0]] #view updated DataFrame df position assists rebounds 0 G 5 11 1 G 7 8 2 F 7 10 3 F 9 6 4 G 12 6 5 G 9 5 6 F 9 9 7 F 4 12
Обратите внимание, что первый столбец под названием «команда» был удален из DataFrame.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:
Удалить столбец df
На выходе: 
Отслеживать
задан 11 мар 2022 в 17:07
user485909 user485909
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
df = df.loc[:, df.iloc[-1] != 3] ^^^^^^^^^^^^^^^^ маска на столбцы
Действуем от противного, то есть оставляем в датафрейме столбцы, в которых последний элемент не равен 3.
Но в принципе можно и удалить, просто будет чуть длиннее (а может я просто не знаю короткого способа):
df = df.drop(columns=df.columns[df.iloc[-1] == 3])
Отслеживать
ответ дан 11 мар 2022 в 17:36
68k 5 5 золотых знаков 20 20 серебряных знаков 51 51 бронзовый знак
можно еще отфильтровать:
df.filter(df.columns[df.iloc[-1]!=3])
Отслеживать
ответ дан 11 мар 2022 в 20:16
5,635 1 1 золотой знак 7 7 серебряных знаков 17 17 бронзовых знаков
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как удалить столбцы в Pandas
При работе с данными в Pandas мы можем удалить столбец (столбцы) или несколько строк из Pandas DataFrame. Столбцы/строки обычно удаляются, если они больше не нужны для дальнейшего изучения.
Есть несколько способов сделать это, но лучший способ в Pandas — использовать форму .drop(). DataFrame часто может содержать столбцы, которые не имеют отношения к исследованию. Такие столбцы следует удалить из DataFrame, чтобы мы могли сосредоточиться на оставшихся столбцах.
Столбцы можно опустить, определив имена меток и соответствующие оси или просто указав индекс или имена столбцов. Кроме того, метки на различных уровнях могут быть удалены с помощью мультииндекса путем определения уровня. В этой статье мы собираемся обсудить исключение столбцов в Pandas с некоторыми примерами.
Функция drop()
Функция drop() используется для удаления набора меток из строки или столбца. Мы также можем удалить один или несколько столбцов из DataFrame Python, используя функцию .drop().
Синтаксис
Синтаксис функции drop() может быть определен как:
DataFrame.drop(self, labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')
Параметры
- Labels: строка или список имен столбцов или значение индекса строки.
- Index: для предоставления меток строк.
- Level: в случае MultiIndex DataFrame он используется для определения уровня, с которого должны быть удалены метки. Он принимает либо местоположение уровня, либо имя уровня в качестве входных данных.
- Axis: указывает, что столбцы или строки должны быть удалены. Чтобы удалить столбцы, установите для оси значение 1 или «columns». По умолчанию он удаляет строки из DataFrame.
- Columns: это альтернатива для axis = «columns». В качестве входных данных он принимает одну метку столбца или список меток столбца.
- Inplace: указывает, следует ли вернуть новый фрейм данных или изменить существующий. Это логический флаг со значением по умолчанию False.
- Errors: если установлено «ignore», игнорировать ошибки.
Returns
- Если inplace = True, он возвращает DataFrame с удаленными столбцами или None.
- Если метки не найдены, выдается KeyError.
Удаление одного столбца
DataFrame может потребовать удаления одного или сложного столбца.
Пример. Мы используем df.drop(columns = ‘имя столбца’) для удаления столбца “age” из DataFrame в приведенном ниже примере.
import pandas as pd student_dict = # Create DataFrame from dict student_df = pd.DataFrame(student_dict) print(student_df) # drop column student_df = student_df.drop(columns='age') print(student_df)
name age marks 0 Joe 20 85.1 1 Nat 21 77.8 name marks 0 Joe 85.1 1 Nat 77.8
Использование функции drop с axis = ‘column’ или axis = 1
Чтобы удалить столбцы, используйте параметр axis метода DataFrame.drop(). В качестве оси может использоваться строка или столбец. Ось столбца обозначается цифрой 1 или «столбцы». Установите axis=1 или axis= ‘columns’ и получите список имен столбцов, которые нужно удалить.
Пример: возьмем приведенный выше пример, чтобы понять, как мы можем использовать функцию drop() с axis = «column» и axis = 1.
student_df = student_df.drop(['age', 'marks'], axis='columns') # alternative both generates same result student_df = student_df.drop(['age', 'marks'], axis=1)
name age marks 0 Joe 20 85.1 1 Nat 21 77.8 name 0 Joe 1 Nat
Удаление нескольких столбцов
Есть два параметра параметров функции DataFrame.drop(), которые мы можем использовать для одновременного удаления нескольких столбцов DataFrame.
- Используйте параметр column, чтобы указать список имен столбцов, которые необходимо удалить.
- Установите axis на 1 и переместите список имен столбцов.
Пример. Давайте рассмотрим пример, чтобы понять, как мы можем удалить несколько столбцов в DataFrame.
import pandas as pd student_dict = student_df = pd.DataFrame(student_dict) print(student_df.columns.values) # drop 2 columns at a time student_df = student_df.drop(columns=['age', 'marks']) print(student_df.columns.values)
name age marks 0 John 24 77.29 1 Alex 18 69.15 name 0 John 1 Alex
Перемещение столбца на место
В предыдущих случаях всякий раз, когда мы выполняли процедуру удаления, Pandas генерировал новую копию DataFrame, потому что модификации не было на месте. Параметр inplace указывает, следует ли удалить столбец из существующего фрейма данных или сделать его копию.
- Если inplace=True, он обновляет текущий DataFrame, ничего не возвращая.
- Если для параметра inplace установлено значение False, он создает новый фрейм данных с обновленными изменениями и возвращает его.
Пример: объясним, как мы можем использовать функцию drop, чтобы переместить столбец на место.
import pandas as pd student_dict = student_df = pd.DataFrame(student_dict) print(student_df.columns.values) # drop columns in place student_df.drop(columns=['age', 'marks'], inplace=True) print(student_df.columns.values)
name age marks 0 John 24 79.18 1 Alex 18 68.79 name 0 John 1 Alex
Принятие или игнорирование ошибок
Если столбец, который мы пытаемся удалить, не существует в наборе данных, метод DataFrame.drop() выдает ошибку KeyError. Если мы просто хотим удалить столбец, если это произойдет, мы можем использовать параметр Errors, чтобы удалить ошибку.
- Установите errors= ‘ignore’, чтобы предотвратить возникновение ошибок.
- Установите errors= ‘raised’, чтобы сгенерировать KeyError для неизвестных столбцов.
Пример: Рассмотрим пример, чтобы понять, как мы можем удалить столбцы, подавляя ошибки.
import pandas as pd student_dict = # Create DataFrame from dict student_df = pd.DataFrame(student_dict) print(student_df) # supress error student_df = student_df.drop(columns='salary', errors='ignore') # No change in the student_df # raise error student_df = student_df.drop(columns='salary') # KeyError: "['salary'] not found in axis"
Вывод: после выполнения приведенного выше кода мы получим вывод, как показано ниже:
name age marks 0 John 24 79.49 1 Alex 18 82.54 raise KeyError(f" not found in axis") KeyError: "['salary'] not found in axis"
Удаление по позиции индекса
Если мы хотим удалить столбцы из DataFrame, но не знаем их имен, мы можем сделать это, удалив столбец, используя его индексную позицию. Индексация столбца начинается с 0 (ноль) и продолжается до последнего столбца, значение индекса которого равно len(df.columns)-1.
Удалить первые n столбцов
Мы можем использовать DataFrame.iloc и функцию range() Python, чтобы определить диапазон столбцов, если нам нужно удалить первые n столбцов из DataFrame. С параметром столбцов DataFrame.drop() нам необходимо использовать встроенную функцию range().
Пример. Давайте рассмотрим пример, чтобы понять, как мы можем удалить первые n столбцов в DataFrame.
import pandas as pd student_dict = # Create DataFrame from dict student_df = pd.DataFrame(student_dict) print(student_df.columns.values) # drop column 1 and 2 student_df = student_df.drop(columns=student_df.iloc[:, range(2)]) # print only columns print(student_df.columns.values)
name age marks class city 0 John 24 84.45 A US 1 Alex 18 76.11 B UK marks class city 84.45 A US 76.11 B UK
Удалить последний столбец
Предположим, что мы хотим исключить первый или последний столбец DataFrame без использования имени столбца. В таких ситуациях используйте атрибут DataFrame.columns для удаления столбца DataFrame на основе его расположения в индексе. Просто переместите df.columns[index] в параметр столбцов DataFrame.drop().
import pandas as pd student_dict = # Create DataFrame from dict student_df = pd.DataFrame(student_dict) print(student_df.columns.values) # find position of the last column and drop pos = len(student_df.columns) - 1 student_df = student_df.drop(columns=student_df.columns[pos]) print(student_df.columns.values) # delete column present at index 1 # student_df.drop(columns = student_df.columns[1])
name age marks 0 John 24 68.44 1 Alex 18 85.67 name age 0 John 24 1 Alex 18
Исключение диапазона столбцов с помощью iloc
Возможно, нам потребуется исключить четвертый столбец из набора данных или группу столбцов вообще. DataFrame.iloc можно использовать для выбора одного или нескольких столбцов из DataFrame. Чтобы определить индексное расположение столбцов, которые необходимо удалить, мы можем использовать DataFrame.iloc в параметре столбца.
Пример: Давайте рассмотрим пример, чтобы понять, как мы можем удалить диапазон столбцов с помощью функции iloc.
import pandas as pd student_dict = # Create DataFrame from dict student_df = pd.DataFrame(student_dict) print(student_df.columns.values) # drop column from 1 to 3 student_df = student_df.drop(columns=student_df.iloc[:, 1:3]) print(student_df.columns.values)
name age marks 0 John 24 79.64 1 Alex 18 86.84 name 0 John 1 Alex
Исключение из мультииндексных фреймов данных
DataFrame с несколькими заголовками столбцов называется мультииндексным DataFrame. Такие заголовки делятся на уровни, где уровень 0 является первым, уровень 1 — вторым и т. д.
Столбец может быть удален из любого этапа мультииндексного DataFrame. По умолчанию он удаляет столбцы со всех уровней, но мы можем использовать уровень параметра, чтобы удалить столбцы только с одного уровня. Мы должны передать имя уровня как уровень = индекс уровня.
import pandas as pd # create column header col = pd.MultiIndex.from_arrays([['Class X', 'Class Y', 'Class Z', 'Class Y'], ['Name', 'Marks', 'Name', 'Marks']]) # create DataFrame from 2darray student_df = pd.DataFrame([['John', '87.22', 'Nat', '68.79'], ['Peter', '73.45', 'Alex', '82.76']], columns=col) print(student_df) # drop column student_df = student_df.drop(columns=['Marks'], level=1) print(student_df)
Class X Class Y Class Z Class Y Name Marks Name Marks 0 John 87.22 Nat 68.79 1 Peter 73.45 Alex 82.76 Class X Class Z Name Name 0 John Nat 1 Peter Alex
Использование функции
Мы также можем использовать функцию для удаления столбцов на основе некоторой логики или условия. Чтобы удалить столбцы, мы можем использовать как встроенные, так и пользовательские функции.
pandas DataFrame.pop()
Если мы просто хотим удалить один столбец, мы можем использовать функцию DataFrame.pop(col label). Нам необходимо передать метку столбца, которую необходимо удалить. Обновляя существующий DataFrame, он удаляет столбец на месте. Если столбец не найден, возникает ошибка KeyError.
import pandas as pd student_dict = # Create DataFrame from dict student_df = pd.DataFrame(student_dict) print(student_df) # drop column student_df.pop('age') print(student_df)
name age marks 0 John 24 62.46 1 Alex 18 54.21 name marks 0 John 62.46 1 Alex 54.21
DataFrame.loc
Если мы хотим удалить все столбцы из DataFrame, мы можем сделать это быстро и легко с помощью DataFrame.loc в параметре столбца DataFrame.drop(). Метки столбцов, которые необходимо удалить, определяются с помощью DataFrame.loc. Если метки столбцов не определены, например df.loc[:], DataFrame будет удален из всех столбцов.
import pandas as pd student_dict = # Create DataFrame from dict student_df = pd.DataFrame(student_dict) print(student_df.columns.values) # drop column 1 and 2 student_df = student_df.drop(columns=student_df.loc[:]) # print only columns print(student_df.columns.values)
name age marks 0 John 24 79.68 1 Alex 18 84.45
Функция delete
Чтобы удалить один столбец из DataFrame, мы могли бы использовать встроенную функцию pandas del. Это очень упрощенный метод удаления столбца из DataFrame. Мы должны выбрать удаляемый столбец DataFrame и передать его как del df[col label].
import pandas as pd student_dict = # Create DataFrame from dict student_df = pd.DataFrame(student_dict) print(student_df) # drop column del student_df['age'] print(student_df)
name age marks 0 John 23 57.88 1 Alex 22 78.84 name marks 0 John 57.88 1 Alex 78.84
