Я хочу использовать pd.merge, чтобы соединить слева df1 с df2, используя ID и Company в качестве точных совпадений и дат совпадений, где df1 ['Date1'] больше, чем df2 ['Date2']. Проблема в том, что я получаю дубликаты, потому что df2 имеет несколько совпадений.
df1:
Company Revenue ID Date1
XX 1000.0 12345x 2020-02-11
XX 6000.0 12345x 2020-01-02
AA 5000.0 12346a 2019-12-20
BB 100.0 22345x 2019-11-07
FF 18000.0 32345x 2020-01-11
df2:
Company Clicks ID Date2
XX 1 12345x 2019-07-11
XX 0 12345x 2020-01-10
AA 0 12346a 2019-12-27
BB 1 22345x 2019-11-07
FF 1 32345x 2019-03-11
FF 0 32345x 2019-08-28
Я пробовал использовать все типы слияний, отбрасывая дублирует из df2 и даже используя групповую.
pd.merge_asof(df1, df2, by=['Company','ID'], left_on='Date1', right_on='Date2', allow_exact_matches=False)
Я поиграл с другими параметрами для merge_asof, т.е. direction = 'forward' и допуск, но он не работает. Я в основном вытаскиваю совпадения из df2, где Date2 предшествует Date1 без повторяющихся дат / совпадений. В случае, когда Company = 'FF', я бы предпочел сопоставить запись, где клики, если это возможно, больше 0.
Ожидаемый результат:
Company Revenue ID Date1 Date2 Clicks
XX 1000.0 12345x 2020-02-11 2020-01-10 0
XX 6000.0 12345x 2020-01-02 2019-07-11 1
AA 5000.0 12346a 2019-12-20 N/A N/A
BB 100.0 22345x 2019-11-07 N/A N/A
FF 18000.0 32345x 2020-01-11 2019-03-11 1