Reemplazar espacios con NULL en el archivo CSV

Esta es la continuación de la publicación a continuación.

Reemplazar espacios con valores NULL comparando dos archivos CSV usando python

Puedo agregar columnas perdidas en el nuevo archivo CSV csvfile3 y reemplazar los espacios con valores NULL.

Este es un nuevo requisito para mi cubo.

Pero si csvfile1 no contiene el orden de las columnas según el orden de los encabezados en csvfile2, Puedo ver el orden correcto de las columnas en csvfile3, pero las columnas que no están en el lugar correcto en csvfile1 se rellenan con valores NULL en el archivo de salida csvfile3.

Esta no es la salida esperada. Valores de esas columnas, que no están en el lugar correcto en csvfile1, también debe copiarse a csvfile3 junto con el encabezado.

El código está presente en el enlace anterior.

digamos que esta es mi otra versión del archivo csv csvfile1 para esta publicación:

name,City,Dept        
sree,Bengaluru,CSE,  
vatsasa,Hyd,ECE,      
,VJA,IT,      
capini,Mech,,   
DTP,,Civil,
Bengaluru,TVM,ECM,      
sre,MNGL,ECS,   
vatsas,Kochi,    
,TVM,Nano,      
capmin,Tech,,       
DTP9,Kochi,CSS,   
,TVM,ESS,    
sree0,MNGL,RSS,  

csvfile2 sería el mismo que el archivo en el enlace anterior.

El siguiente es el resultado esperado:

name      Dept  City      Address
sree,     CSE,  Bengaluru,NULL
vatsasa,  ECE,  Hyd,      NULL
NULL,     IT,   VJA,      NULL
capini,   NULL, Mech,     NULL
DTP,      Civil,NULL,     NULL
Bengaluru,ECM,  TVM,      NULL
sre,      ECS,  MNGL,     NULL
vatsas,   NULL, Kochi,    NULL
NULL,     Nano, TVM,      NULL
capmin,   NULL, Tech,     NULL
DTP9,     CSS,  Kochi,    NULL
NULL,     ESS,  TVM,      NULL
sree0,    RSS,  MNGL,     NULL

Salida del código en el enlace:

name      Dept  City      Address
sree,     CSE,  NULL,     NULL
vatsasa,  ECE,  NULL,     NULL
NULL,     IT,   NULL,     NULL
capini,   NULL, NULL,     NULL
DTP,      Civil,NULL,     NULL
Bengaluru,ECM,  NULL,     NULL
sre,      ECS,  NULL,     NULL
vatsas,   NULL, NULL,     NULL
NULL,     Nano, NULL,     NULL
capmin,   NULL, NULL,     NULL
DTP9,     CSS,  NULL,     NULL
NULL,     ESS,  NULL,     NULL
sree0,    RSS,  NULL,     NULL

Este es el código:

import csv

with open("csvfile1.csv") as csv_1,\
     open("csvfile2.csv") as csv_2,\
     open("csvfile3.csv", "w") as csv_3:

    reader_1 = csv.reader(csv_1)
    reader_2 = csv.reader(csv_2)
    writer = csv.writer(csv_3)

    headers_1 = next(reader_1)
    headers_2 = next(reader_2)

    insert_null_at = []
    for i, header in enumerate(headers_2):
        if header not in headers_1:
            insert_null_at.append(i)

    writer.writerow(headers_2)
    for row in reader_1:
        for i in insert_null_at:
            row.insert(i, "")

        writer.writerow([item if item != "" else "NULL" for item in row])

Respuestas a la pregunta(0)

Su respuesta a la pregunta