Как выбрать записи с несуществующим условием в pandas фрейме данных - PullRequest
2 голосов
/ 14 января 2020

У меня есть два кадра данных, как показано ниже. Я хочу переписать запрос выбора данных SQL в pandas, который содержит условие не существует

SQL

Select ORDER_NUM, DRIVER  FROM DF
                          WHERE
                          1=1
                        AND NOT EXISTS   
 (
        SELECT 1 FROM
                 order_addition oa
                 WHERE
                  oa.Flag_Value = 'Y'
            AND   df.ORDER_NUM  = oa.ORDER_NUM)

Пример данных

order_addition.head(10)

ORDER_NUM   Flag_Value
22574536    Y
32459745    Y
15642314    Y
12478965    N
25845673    N
36789156    N

df.head(10)

ORDER_NUM   REGION  DRIVER
22574536    WEST    Ravi
32459745    WEST    David
15642314    SOUTH   Rahul
12478965    NORTH   David
25845673    SOUTH   Mani
36789156    SOUTH   Tim

Как это можно сделать в pandas легко.

1 Ответ

1 голос
/ 14 января 2020

IIU C, вы можете merge на df1 со значениями, равными Y, а затем найти nans:

result = df2.merge(df1[df1["Flag_Value"].eq("Y")],how="left",on="ORDER_NUM")

print (result[result["Flag_Value"].isnull()])

   ORDER_NUM REGION DRIVER Flag_Value
3   12478965  NORTH  David        NaN
4   25845673  SOUTH   Mani        NaN
5   36789156  SOUTH    Tim        NaN

Или даже проще, если ваши ORDER_NUM уникальны:

print (df2.loc[~df2["ORDER_NUM"].isin(df1.loc[df1["Flag_Value"].eq("Y"),"ORDER_NUM"])])

   ORDER_NUM REGION DRIVER
3   12478965  NORTH  David
4   25845673  SOUTH   Mani
5   36789156  SOUTH    Tim
...