Python - объединение Like + '%' для слияния двух кадров данных Pandas - PullRequest
0 голосов
/ 15 июня 2019

У меня есть следующие рамки данных Pandas со следующими схемами:

  • df_1:
    • id
    • идентификатор

Входные данные здесь:

 id identifier
    1   SQL
    2   JAVA
    3   C#
  • df_2:
    • id
    • string_resume
    • string_long

Введите здесь:

     id string_resume   string_long
1   Structured Query Language   SQL is a domain-specific language
2   Java is a general-purpose programming language  It is intended to let application developers “write once, run anywhere” (WORA)
3   PHP is a programming language   Usually it is used for Web Apps

И я пытаюсь присоединиться, чтобы увидеть, принадлежит ли столбец идентификатора string_resume или string_long.Я сделал логику в SQL:

SELECT *
FROM df_1
INNER JOIN  df_2 ON
    df_1.id = df_2.id 
    AND (   df_2.string_resume LIKE '%' + df_1.identifier + '%'
        OR  df_2.string_long LIKE '%' + df_1.identifier + '%'
        )

В Python я пытаюсь использовать приведенный ниже код (слияние), но он возвращает только внутреннее соединение с операцией "=".

res = pd.merge(df_1, df_2, left_on=['id', 'identifier'], right_on=['cod_system_log_event', 'string_resume', 'string_long'], how='left').drop('id', axis=1)

Выходные данные должны быть:

  id    identifier  id  string_resume   string_long
    1   SQL 1   Structured Query Language   SQL is a domain-specific language used in programming
    2   JAVA    2   Java is a general-purpose programming language  It is intended to let application developers “write once, run anywhere” (WORA)

Как применить приведенную выше логику SQL в Python?

Большое спасибо

...