Únase a Pandas DataFrames coincidentes por substring

Prerrequisitos: Pandas

En este artículo, aprenderemos cómo unir dos marcos de datos que coincidan por substring con python. 

Funciones utilizadas:

  • join() : une todos los elementos en una iteración en una sola string
  • lambda( ): un método anónimo que se declara sin nombre y puede aceptar cualquier número de parámetros
  • find() : obtiene la apariencia inicial de cualquier valor requerido
  • merge() : fusiona dos marcos de datos

Acercarse

Siga los pasos a continuación para unir dos marcos de datos emparejados por substring.

  • Cree dos tramas de datos.
  • Une dos marcos de datos usando el producto cartesiano
  • Únase a una columna duplicada que incluya valores iguales en todos los DataFrames
  • Únete a la nueva columna
  • Por último, elimine la columna agregada en cada DataFrame.
  • Luego, debemos agregar una nueva columna al marco de datos. Para hacer esto, usaremos las funciones «lambda» junto con «buscar» donde la salida es mayor que cero.
  • Ahora imprimimos los marcos de datos unidos emparejados por substrings.

A continuación se muestra la implementación.

Python3

import pandas as pd
  
  
dataFrame1 = pd.DataFrame([['PQR', 'B1'], ['QRS', 'B2'], ['RDE', 'B3']], 
                          columns=['work_name', 'tag_name'])
  
dataFrame2 = pd.DataFrame([['RR', 'T1'], ['QR', 'T2'], ['HG', 'T3'], 
                           ['PQ', 'T4']],
                          columns=['sub_work_name', 'extra_tag_value'])
  
dataFrame1['join'] = 1
dataFrame2['join'] = 1
  
dataFrameFull = dataFrame1.merge(
  dataFrame2, on='join').drop('join', axis=1)
  
dataFrame2.drop('join', axis=1, inplace=True)
  
dataFrameFull['match'] = dataFrameFull.apply(
    lambda x: x.work_name.find(x.sub_work_name), axis=1).ge(0)
  
print(dataFrameFull[dataFrameFull['match']])

Producción:

Publicación traducida automáticamente

Artículo escrito por rijushree100guha y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *