Я хочу удалить строки из фрейма данных, исходя из условия, что значение определенного столбца находится в списке. Если это не так, я хочу, чтобы строка была удалена.
Есть ли у вас какие-либо предложения? заранее спасибо
Например, если значение в столбце «C» не входит в список l, я хочу удалить всю строку
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(20, 4)), columns=list('ABCD'))
l = [4, 6, 23, 45, 79]
Привет и добро пожаловать на SO. Будет здорово, если вы сможете взглянуть на Как спросить, а затем попытаться создать минимальный воспроизводимый пример.
Или какое условие? Какое значение? Отредактируйте вопрос.
ой извините, сейчас отредактировал






df = df[df.apply(lambda x: any(x.isin(l)), axis=1)]
если только один столбец должен быть
а если, то только C:
df[df.apply(lambda x: x["C"] in l, axis=1)]
или, если все столбцы:
df = df[df.apply(lambda x: all(x.isin(l)), axis=1)]
Вы можете попробовать так:
df = pd.DataFrame([[1, 2], [3, 4], [5, 6]], columns=["a", "b"])
df[(df.a.isin([3]) == False)]
Это оставит во фрейме данных только те строки, значение a которых отсутствует в списке, заданном isin, то есть там, где оно не равно 3.
Не могли бы вы предоставить некоторые текстовые данные, что вы пробовали и какие результаты вы ожидаете?