es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Solo generar una fila CSV como salida si dos columnas de dos archivos CSV coinciden con Python-Pandas.

Novato con Python. Tengo 2 archivos CSV que tienen el apellido del estudiante y el nombre del estudiante (Re-enrolledonline.csv y currentschoolroster.csv: el número de columnas y encabezados de columna son diferentes, pero ambos archivos contienen esta información). Luego, necesito crear un CSV con una lista de estudiantes que NO se encuentren en Re-enrolledonline.csv pero SÍ en currentschoolroster.csv. Puedo hacer coincidir una columna sin problema con el código a continuación, pero no puedo encontrar una buena fuente de recursos sobre cómo escribir en el nuevo archivo si las columnas tanto de nombre como de apellido coinciden.

¡Gracias!

import pandas as pd

f1 = pd.read_csv('/users/Desktop/CompareFiles/currentschoolroster.csv')
f2 = pd.read_csv('/users/Desktop/CompareFiles/Re-enrolledonline.csv')

notmatched = f1[~f1.Last_Name.isin(f2.StudentLastName)]

notmatched.to_csv('/users/Desktop/CompareFiles/notmatched.csv')
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para que coincidan las columnas de nombre y apellido, puedes modificar el código de la siguiente manera:

    import pandas as pd
    
    f1 = pd.read_csv('/users/Desktop/CompareFiles/currentschoolroster.csv')
    f2 = pd.read_csv('/users/Desktop/CompareFiles/Re-enrolledonline.csv')
    
    no_coincidentes = f1[~(f1.Last_Name.isin(f2.StudentLastName) & f1.First_Name.isin(f2.StudentFirstName))]
    
    no_coincidentes.to_csv('/users/Desktop/CompareFiles/notmatched.csv')
    

    En esta modificación, estamos usando dos condiciones en los corchetes para filtrar las filas de f1 que tienen tanto el nombre como el apellido coincidentes en f2. & es el operador para la lógica “y” en Python.

    Espero que esto te ayude.

Comments are closed.