У меня есть dataframe, который выглядит следующим образом:Удалить из DataFrame если значение существует
import pandas as pd
df = pd.DataFrame(data=[[1, 'ABC'], [2, 'ABC'], [3, 'ABCDEF'], [1, 'ABCDEF']], columns=['id', 'marker'])
Я фактически пытаюсь сделать это SQL заявления, но в панде.
delete #table
from #table a, #table b
where a.id = b.id
and a.marker = b.marker + 'DEF'
Что бы эффективно избавилось от последней строки в кадре данных. Любая идея, как я могу это сделать?
EDIT:
Для уточнения на вышесказанном, позволяет сказать, что данные, как это:
id marker
0 1 ABC
1 2 ABC
2 3 ABCDEF
3 1 ABCDEF
4 4 ABCDEF
Ответ должен быть
id marker
0 1 ABC
1 2 ABC
2 3 ABCDEF
4 4 ABCDEF
(1, 'ABCDEF') является опущено, поскольку присутствует (1, «ABC»), что будет эффективно выполнять оператор SQL (т. е. удалить все строки, где идентификаторы равны, а маркер имеет «DEF»). Если для ID X присутствует только «ABCDEF», он сохранит его, но если ID Y имеет как «ABC», так и «ABCDEF», он удалит «ABCDEF».
Спасибо. Я имел в виду, что это не последняя строка. В принципе, я хочу реплицировать то, что сделал бы этот оператор sql, что позволило бы мне выбрать каждую строку, где маркер «ABC» сначала, если «ABC» не существует, я бы взял «ABCDEF» – swmfg
@swmfg Затем в этом case, в текущем примере, который вы опубликовали, вы не удаляете никаких строк, потому что все значения в столбце 'marker' являются либо' ABC', либо 'ABCDEF'? –
@swmfg Я изменил свой ответ на основе вашего комментария. –