Pandas DataFrames — это структуры данных, где:
- Данные организованы в двух измерениях: строках и столбцах.
- Метки, соответствующие строкам и столбцам.
Есть много способов создать Pandas DataFrame. В большинстве случаев вы будете использовать конструктор DataFrame и предоставлять данные, метки и другую информацию. Вы можете передавать данные в виде двумерного списка, кортежа или массива NumPy. Также можете использовать его как словарь или экземпляр Pandas Series.
- Что такое функция DataFrame drop() в Pandas?
- Синтаксис
- Параметры
- Возвращаемое значение
- Удаление столбцов из DataFrame с помощью метода drop()
- Удаление нескольких столбцов с помощью метода df.drop()
- Удаление столбцов на основе индекса столбца
- Удаление строки по индексу в DataFrame с помощью drop()
- Использование методов iloc[] и drop()
- Использование методов loc[] и drop()
- Итеративный способ удаления столбцов
- Заключение
Что такое функция DataFrame drop() в Pandas?
Функция Pandas DataFrame drop() удаляет указанные метки из строк и столбцов. Функция drop() удаляет строки и столбцы либо путем определения имен меток и соответствующих осей, либо путем прямого упоминания имен индексов или столбцов.
Когда мы используем мультииндекс, метки на разных уровнях удаляются путем упоминания уровня. Он используется для удаления фрейма данных, который нам не нужен в нашем анализе.
Давайте создадим Pandas DataFrame, используя Dictionary.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import pandas as pd import numpy as np # Importing numpy for NaN values # Creating dataset using dictionary dataset = { 'Name': ['Rohit', 'Arun', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '02', '03', '04', np.nan], 'Maths': ['93', '63', np.nan, '94', '83'], 'Science': ['88', np.nan, '66', '94', np.nan], 'English': ['93', '74', '84', '92', '87']} row_labels = ['a', 'b', 'c', 'd', 'e'] df = pd.DataFrame(data = dataset, index = row_labels) print("DataFrame:\n", df) |
Выход:
|
1 2 3 4 5 6 7 |
DataFrame: Name Roll no Maths Science English a Rohit 01 93 88 93 b Arun 02 63 NaN 74 c Sohit 03 NaN 66 84 d Arun 04 94 94 92 e Shubh NaN 83 NaN 87 |
Набор данных — это переменная Python, которая ссылается на словарь, содержащий данные учащихся. Он также содержит метки столбцов:
- ‘Name’
- ‘Roll No’
- ‘Maths’
- ‘Science’
- ‘English’
Наконец, row_labels относится к списку, содержащему метки строк, представляющие собой числа от a до e. Pandas DataFrames иногда могут быть очень большими, что делает непрактичным просмотр всех строк одновременно. Вместо этого вы можете использовать .head() для отображения первых нескольких элементов и tail() для отображения последних нескольких элементов.
Теперь давайте разберемся с синтаксисом метода Pandas DataFrame drop().
Синтаксис
|
1 |
DataFrame.drop(self, labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors=’raise’) |
Параметры
Всего функция drop() содержит семь параметров, некоторые из которых являются необязательными.
- labels: это индекс или метки столбцов, которые нужно удалить. По умолчанию он установлен в виде одной метки или списка.
- axis: имеет значения 0 и 1. Мы ставим 0 в параметр, если мы хотим удалить из индекса и 1, когда мы удаляем из столбцов. По умолчанию это 0.
- index: это альтернатива указанию оси (labels, axis=0 эквивалентна index = labels).
- columns: это альтернатива определению оси(labels, axis=1 соответствует columns=labels.
- level: этот параметр является необязательным и предназначен для целей мультииндекса, то есть уровня, с которого будут удалены метки.
- inplace: это логический параметр, когда true выполняет операцию на месте и возвращает None. По умолчанию его значение равно false.
- errors: если установлено значение «ignore», ошибка подавляется, и удаляются только существующие метки. Он может иметь два значения: 1-е — «ignore», а 2-е — «raise» по умолчанию; его значение повышается.
Возвращаемое значение
Метод Pandas drop() возвращает фрейм данных без удаленного индекса или сложных меток.
Удаление столбцов из DataFrame с помощью метода drop()
Давайте удалим столбец Science из DataFrame и посмотрим на результат.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import pandas as pd import numpy as np # Importing numpy for NaN values # Creating dataset using dictionary dataset = { 'Name': ['Rohit', 'Arun', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '02', '03', '04', np.nan], 'Maths': ['93', '63', np.nan, '94', '83'], 'Science': ['88', np.nan, '66', '94', np.nan], 'English': ['93', '74', '84', '92', '87']} row_labels = ['a', 'b', 'c', 'd', 'e'] df = pd.DataFrame(data=dataset, index=row_labels) print("DataFrame:\n", df) print('Remove "Science" column from DataFrame') removed = df.drop(['Science'], axis=1) print("After Removing Science DataFrame:\n", removed) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
DataFrame: Name Roll no Maths Science English a Rohit 01 93 88 93 b Arun 02 63 NaN 74 c Sohit 03 NaN 66 84 d Arun 04 94 94 92 e Shubh NaN 83 NaN 87 Remove "Science" column from DataFrame After Removing Science DataFrame: Name Roll no Maths English a Rohit 01 93 93 b Arun 02 63 74 c Sohit 03 NaN 84 d Arun 04 94 92 e Shubh NaN 83 87 |
В этом примере мы удалили столбец Science из DataFrame. Мы можем сделать это по-другому, например, явно определить столбцы в аргументе df.drop().
|
1 |
removed = df.drop(columns=['Science']) |
Нам не нужно передавать параметр axis = 1 в метод drop(). И мы получим тот же результат.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
DataFrame: Name Roll no Maths Science English a Rohit 01 93 88 93 b Arun 02 63 NaN 74 c Sohit 03 NaN 66 84 d Arun 04 94 94 92 e Shubh NaN 83 NaN 87 Remove "Science" column from DataFrame After Removing Science DataFrame: Name Roll no Maths English a Rohit 01 93 93 b Arun 02 63 74 c Sohit 03 NaN 84 d Arun 04 94 92 e Shubh NaN 83 87 |
Посмотрим другую программу. показывающую работу функции drop().
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import pandas as pd data = { 'Name': ['Rohit', 'Mohit', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '03', '04', '05', '09'], 'Marks in maths': ['93', '63', '74', '94', '83'], 'Marks in science': ['88', '55', '66', '94', '35'], 'Marks in english': ['93', '74', '84', '92', '87']} df = pd.DataFrame(data) # Removing the marks in maths column print(df.drop(['Marks in maths'], axis=1)) |
Выход:
|
1 2 3 4 5 6 |
Name Roll no Marks in science Marks in english 0 Rohit 01 88 93 1 Mohit 03 55 74 2 Sohit 04 66 84 3 Arun 05 94 92 4 Shubh 09 35 87 |
Здесь, в этом примере, мы создали словарь, который содержит данные о 5 студентах. Данные включают их имена, номера и оценки по различным предметам.
Здесь, если мы хотим отобразить, например, данные только двух предметов, мы можем использовать метод drop(), чтобы удалить конкретный столбец, например, Maths. Итак, здесь мы опустили отметки в математическом столбце, используя функцию отбрасывания.
Удаление нескольких столбцов с помощью метода df.drop()
Функция Pandas DataFrame drop() может помочь нам удалить несколько столбцов из DataFrame. Мы можем передать список столбцов в метод drop(), который удалит все столбцы из DataFrame.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
import pandas as pd data = { 'Name': ['Rohit', 'Mohit', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '03', '04', '05', '09'], 'Marks in maths': ['93', '63', '74', '94', '83'], 'Marks in science': ['88', '55', '66', '94', '35'], 'Marks in english': ['93', '74', '84', '92', '87']} df = pd.DataFrame(data) # Dropping multiple columns print(df.drop(['Marks in maths', 'Marks in science'], axis=1)) |
Выход:
|
1 2 3 4 5 6 |
Name Roll no Marks in english 0 Rohit 01 93 1 Mohit 03 74 2 Sohit 04 84 3 Arun 05 92 4 Shubh 09 87 |
Здесь мы передали два столбца в аргументе функции drop(), и вы можете видеть, как удалили два столбца с помощью функции drop, это были Marks in maths и Marks in science.
Удаление столбцов на основе индекса столбца
Функция df.drop() удаляет столбец на основе индекса столбца. Таким образом, мы можем передать список индексов в функцию drop(), удаляя столбцы на основе индекса столбца.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import pandas as pd import numpy as np # Importing numpy for NaN values # Creating dataset using dictionary dataset = { 'Name': ['Rohit', 'Arun', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '02', '03', '04', np.nan], 'Maths': ['93', '63', np.nan, '94', '83'], 'Science': ['88', np.nan, '66', '94', np.nan], 'English': ['93', '74', '84', '92', '87']} df = pd.DataFrame(data=dataset) print("DataFrame:\n", df) print('--------------------------------------') # Remove rows based on index df.drop(df.columns[[1, 3]], axis=1, inplace=True) print("After removing specific rows from DataFrame:\n", df) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
DataFrame: Name Roll no Maths Science English 0 Rohit 01 93 88 93 1 Arun 02 63 NaN 74 2 Sohit 03 NaN 66 84 3 Arun 04 94 94 92 4 Shubh NaN 83 NaN 87 -------------------------------------- After removing specific rows from DataFrame: Name Maths English 0 Rohit 93 93 1 Arun 63 74 2 Sohit NaN 84 3 Arun 94 92 4 Shubh 83 87 |
В этом примере мы использовали функцию df.columns() для передачи списка индексов столбцов, а затем обернули эту функцию методом df.drop(), и, наконец, она удалит столбцы, указанные индексами.
Удаление строки по индексу в DataFrame с помощью drop()
Метод Pandas df.drop() удаляет строку, указывая индекс DataFrame. Поэтому мы должны указать список индексов, и он удалит эти строки на основе индексов из DataFrame.
Давайте отбросим строку на основе индексов 0, 2 и 3.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import pandas as pd import numpy as np # Importing numpy for NaN values # Creating dataset using dictionary dataset = { 'Name': ['Rohit', 'Arun', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '02', '03', '04', np.nan], 'Maths': ['93', '63', np.nan, '94', '83'], 'Science': ['88', np.nan, '66', '94', np.nan], 'English': ['93', '74', '84', '92', '87']} df = pd.DataFrame(data=dataset) print("DataFrame:\n", df) print('--------------------------------------') # Remove rows based on index removedRow = df.drop([0, 2, 3]) print("After removing specific rows from DataFrame:\n", removedRow) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
DataFrame: Name Roll no Maths Science English 0 Rohit 01 93 88 93 1 Arun 02 63 NaN 74 2 Sohit 03 NaN 66 84 3 Arun 04 94 94 92 4 Shubh NaN 83 NaN 87 -------------------------------------- After removing specific rows from DataFrame: Name Roll no Maths Science English 1 Arun 02 63 NaN 74 4 Shubh NaN 83 NaN 87 |
В этом примере мы передали список индексов строк в функцию удаления, которую нужно удалить.
Использование методов iloc[] и drop()
Pandas.DataFrame.iloc — это уникальный встроенный метод, который возвращает индексирование на основе целочисленного местоположения для выбора по положению. Мы выберем столбцы, используя iloc[] с методом drop().
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import pandas as pd import numpy as np # Importing numpy for NaN values # Creating dataset using dictionary dataset = { 'Name': ['Rohit', 'Arun', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '02', '03', '04', np.nan], 'Maths': ['93', '63', np.nan, '94', '83'], 'Science': ['88', np.nan, '66', '94', np.nan], 'English': ['93', '74', '84', '92', '87']} df = pd.DataFrame(data=dataset) print("DataFrame:\n", df) print('--------------------------------------') df.drop(df.iloc[:, 1:3], inplace=True, axis=1) print("After removing specific rows from DataFrame:\n", df) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
DataFrame: Name Roll no Maths Science English 0 Rohit 01 93 88 93 1 Arun 02 63 NaN 74 2 Sohit 03 NaN 66 84 3 Arun 04 94 94 92 4 Shubh NaN 83 NaN 87 -------------------------------------- After removing specific rows from DataFrame: Name Science English 0 Rohit 88 93 1 Arun NaN 74 2 Sohit 66 84 3 Arun 94 92 4 Shubh NaN 87 |
В этом примере мы выбрали 1 и 2 строки с помощью iloc[] и удалили их из DataFrame с помощью метода drop().
Использование методов loc[] и drop()
Функция Pandas DataFrame loc[] используется для доступа к группе строк и столбцов по меткам или логическому массиву. Метод loc() в основном выполняется на основе меток, но булев массив также может это делать. Затем мы удалим выбранные строки или столбцы с помощью метода drop().
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import pandas as pd import numpy as np # Importing numpy for NaN values # Creating dataset using dictionary dataset = { 'Name': ['Rohit', 'Arun', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '02', '03', '04', np.nan], 'Maths': ['93', '63', np.nan, '94', '83'], 'Science': ['88', np.nan, '66', '94', np.nan], 'English': ['93', '74', '84', '92', '87']} df = pd.DataFrame(data=dataset) print("DataFrame:\n", df) print('--------------------------------------') df.drop(df.loc[:, 'Maths':'Science'].columns, axis=1, inplace=True) print("After removing specific rows from DataFrame:\n", df) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
DataFrame: Name Roll no Maths Science English 0 Rohit 01 93 88 93 1 Arun 02 63 NaN 74 2 Sohit 03 NaN 66 84 3 Arun 04 94 94 92 4 Shubh NaN 83 NaN 87 -------------------------------------- After removing specific rows from DataFrame: Name Roll no English 0 Rohit 01 93 1 Arun 02 74 2 Sohit 03 84 3 Arun 04 92 4 Shubh NaN 87 |
Вы можете видеть, что столбцы Maths и Science были удалены из DataFrame. Разница между loc() и iloc() заключается в том, что iloc() исключает последний элемент диапазона столбцов.
Итеративный способ удаления столбцов
Этот подход не рекомендуется, потому что он требует времени для выполнения, но этот подход делает то, что вы должны получить столбцы, используя метод df.columns(), и перебирать столбцы, используя цикл for. Затем мы используем оператор Python in для удаления столбца с помощью метода del.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import pandas as pd import numpy as np # Importing numpy for NaN values # Creating dataset using dictionary dataset = { 'Name': ['Rohit', 'Arun', 'Sohit', 'Arun', 'Shubh'], 'Roll no': ['01', '02', '03', '04', np.nan], 'Maths': ['93', '63', np.nan, '94', '83'], 'Science': ['88', np.nan, '66', '94', np.nan], 'English': ['93', '74', '84', '92', '87']} df = pd.DataFrame(data=dataset) print("DataFrame:\n", df) print('--------------------------------------') for col in df.columns: if 'Maths' in col: del df[col] print("After removing specific rows from DataFrame:\n", df) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
DataFrame: Name Roll no Maths Science English 0 Rohit 01 93 88 93 1 Arun 02 63 NaN 74 2 Sohit 03 NaN 66 84 3 Arun 04 94 94 92 4 Shubh NaN 83 NaN 87 -------------------------------------- After removing specific rows from DataFrame: Name Roll no Science English 0 Rohit 01 88 93 1 Arun 02 NaN 74 2 Sohit 03 66 84 3 Arun 04 94 92 4 Shubh NaN NaN 87 |
В этом примере мы проверили столбец Maths, и если он есть, мы удалим этот столбец из DataFrame с помощью оператора del.
Заключение

В этом руководстве мы рассмотрели следующие способы удаления столбцов или строк из Pandas DataFrame.
- Удаление одного столбца из DataFrame.
- Нескольких столбцов из DataFrame.
- Удаление столбцов с помощью индекса столбца.
- С помощью iloc[ ] и drop().
- С помощью loc[] и drop().
- Итеративным способом.
- Удаление строк с помощью индексов.
