Pandas эквивалент SQL не существует подзапроса

SolidSnake спросил: 07 октября 2018 в 11:28 в: python

Я пытаюсь удалить определенные строки из таблицы Pandas. По сути, это упражнение с дедупликацией:

У меня есть таблица

           id          sub_id1       sub_id2              date       
0           1           424755           101        2018-09-21      
1           2           424755           101        2018-09-21
2           3           424755           102        2018-09-21
3           4           678321           101        2018-09-21
4           5           678321           102        2018-09-22
5           6           424755           102        2018-09-22

Я хочу удалить строку, если есть другая строка, соответствующая sub_id1 и date, но имеет более низкий sub_id2.

SQL-код, который я написал бы для этого, был бы

select * from table t
where not exists (select 1 from table
                  where sub_id1=t.sub_id1
                  and date=t.date
                  and sub_id2<t.sub_id2)

Результирующая таблица будет

           id          sub_id1       sub_id2              date       
0           1           424755           101        2018-09-21      
1           2           424755           101        2018-09-21
2           4           678321           101        2018-09-21
3           5           678321           102        2018-09-22
4           6           424755           102        2018-09-22

, где id=3 удаляется, потому что есть строки, которые имеют точно такие же sub_id1 и дату столбец, как он делает, с более низким sub_id2.

Попытка выяснить это с помощью слияний Панд. Спасибо!


0 ответов