У меня есть pandas фрейм данных, импортированный из SQL, и я хотел бы удалить строки, для которых значение столбца находится в списке, который я получаю из файла csv. Это кажется довольно простым, я посмотрел и попробовал несколько вещей, используя .isin()
, но это не работает так, как я ожидал.
Например, фрейм данных, импортированный из SQL, выглядит так, назовем его df :
SKU Brand
0 AD31KL-A1 BrandA
1 BC31KL-B3 BrandB
2 DE31KL-D4 BrandC
3 FG31KL-F5 BrandD
Я импортирую этот список следующим образом:
df2 = pd.read_csv("list.csv")
list = df2.apply(lambda x: x.tolist(), axis=1)
Предположим, я распечатал список, вот что я вижу:
[BC31KL-B3]
[DE31KL-D4]
Length: 2, dtype: object
Затем я используйте следующее:
df = df[~df.SKU.isin(list)]
Я ожидал бы получить это (исходный df со строками 1 и 2 отброшен, потому что они находятся в списке)
SKU Brand
0 AD31KL-A1 BrandA
3 FG31KL-F5 BrandD
Однако это не то, что происходит . Я получаю тот же самый df, что и изначально, без выпадения строк, а также без каких-либо сообщений об ошибках. Что я делаю не так ? Я думал, что данные в списке и в столбце df могут быть разных типов, и я попытался поиграть с astype()
, но без особого успеха. Возможно, я неправильно его использую.
Буду признателен за любую помощь. Спасибо!