У меня есть 2 кадра данных: данные и неподходящие для следующих фигур:
print(data.shape)
(72757056, 5)
print(ineligible.shape)
(141531, 2)
эти 2 datafrmaes имеют 2 общих столбца («штрих-код» и «магазин»). Я хочу удалить строки «данных», для которых комбинация штрих-кода и магазина не находится в «неподходящем», и я знаю, что могуполучить результат с помощью кода ниже:
data = data[~(data.loc[:,["barcode"] + (data.loc[:,"store"]).astype(str)).isin((ineligible.loc[:,"barcode"] + (ineligible.loc[:,"store"]).astype(str)))]
однако, поскольку длина «данных» очень велика, у меня закончилась память (16 ГБ) и я не смог получить результаты.Я ценю, если кто-то может предоставить мне более эффективное и меньшее использование памяти.
предположим, что примерные кадры данных выглядят следующим образом:
data = pd.DataFrame({'barcode': ['A', 'B', 'B', 'C', 'C','A', 'B', 'B', 'C', 'C'],'store': ['P5', 'P2', 'P3', 'P4', 'P5','P2','P4','P1','P1','P2'],'count1': [0,5,7,8,0,1,8,0,0,9],'count2': [0,5,7,8,0,1,8,0,0,9]})
ineligible = pd.DataFrame({'barcode': ['A', 'B', 'B', 'C', 'C'],'store': ['P1', 'P2', 'P3', 'P4', 'P5']})
, а результат должен выглядеть следующим образом: ![result](https://i.stack.imgur.com/A1dQR.png)