Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
10 Сен 2024
2 мин
1265

Удаление строк из DataFrame на основе условного выражения в Pandas

Часто возникает необходимость удалить определенные строки из DataFrame в Pandas на основе определенных условий. Например, представим, что у нас есть DataFrame,

Часто возникает необходимость удалить определенные строки из DataFrame в Pandas на основе определенных условий. Например, представим, что у нас есть DataFrame, и мы хотим удалить строки, в которых длина строки в определенном столбце превышает 2.

import pandas as pd

data = {'column1': ['abc', 'def', 'ghi', 'jkl'],
        'column2': ['mno', 'pqr', 'stu', 'vwx'],
        'column3': ['yz', 'ab', 'cd', 'ef']}

df = pd.DataFrame(data)

В этом DataFrame мы хотим удалить строки из column1, где длина строки больше 2. В первую очередь, кажется логичным использовать следующий код для достижения этой цели:

df[(len(df['column1']) < 2)]

Однако, выполнение этого кода приведет к ошибке KeyError: 'no item named False'.

Почему возникает ошибка?

Ошибка происходит потому, что len(df['column1']) возвращает количество строк в столбце, а не длину каждой отдельной строки в столбце. Поэтому, условное выражение (len(df['column1']) < 2) возвращает либо True, либо False, вместо серии булевых значений.

Как правильно удалять строки на основе условного выражения?

Для удаления строк из DataFrame на основе условного выражения нужно использовать метод apply() вместе с лямбда-функцией. Вот как это можно сделать:

df = df[df['column1'].apply(lambda x: len(x) &lt;= 2)]

В этом коде lambda x: len(x) <= 2 — это функция, которая применяется к каждому элементу в column1. Если длина строки в column1 меньше или равна 2, то выражение возвращает True, в противном случае возвращает False. Таким образом, мы получаем серию булевых значений, которую можно использовать для фильтрации DataFrame.

После выполнения этого кода, DataFrame будет содержать только те строки, в которых длина строки в column1 меньше или равна 2.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий