¿Cómo encontrar las diferencias entre dos conjuntos de datos en Python?

votos
0

Esta secuencia es comparar dos archivos de Excel separados por las diferencias y luego escribir las adiciones y supresiones a las nuevas tablas. El campo Meter_No es la forma en que estoy identificación de la fila. He conseguido este script para producir una salida, pero la única información contenida sea para el campo que estoy buscando. Soy muy consciente de por qué ocurre esto, pero no puedo averiguar la solución correcta. Me gustaría una fila completa de la información en la salida final, incluyendo los otros campos.

Sé utilizar el asterisco para devolver todos los campos en el cursor de búsqueda, pero quiero aplicar la propia búsqueda en el campo Meter_No. Estoy pensando en algún lugar del bucle for es donde tengo que hacerlo. Cualquier ayuda sería apreciada.

Además, soy nuevo en Python así que me gustaría que atenerse a lo que está contenido en la biblioteca ArcPy. Sé que este script no es óptimo, pero es de una manera que yo pueda entender.

módulos de importación

import arcpy
arcpy.env.workspace = rM:\GISTransfer\BOD_Round_Project\Relaunch
arcpy.env.overwriteOutput = True

print(modules imported)

las variables de ajuste

newXLSX = rM:\GISTransfer\BOD_Round_Project\Relaunch\Source_Data_TEST_copy.xlsx
oldXLSX = rM:\GISTransfer\BOD_Round_Project\Relaunch\Source_Data.xlsx
fld = [Meter_No]
newList = []
oldList = []
addList = []
delList = []

print(variables set)

convertir archivos de Excel a las tablas

arcpy.ExcelToTable_conversion(newXLSX,newTB.dbf)
arcpy.ExcelToTable_conversion(oldXLSX,oldTB.dbf)

newDBF = rM:\GISTransfer\BOD_Round_Project\Relaunch\newTB.dbf
oldDBF = rM:\GISTransfer\BOD_Round_Project\Relaunch\oldTB.dbf

print(tables created)

primer cursor de búsqueda para explorar el nuevo archivo de Excel

with arcpy.da.SearchCursor(newDBF, fld) as newCursor:
    for row in newCursor:
        newList.append(row)

segundo cursor de búsqueda para escanear el archivo de Excel de edad

with arcpy.da.SearchCursor(oldDBF, fld) as oldCursor:
    for row in oldCursor:
        oldList.append(row)

print(searches complete)

encontrar las diferencias entre los dos

for a in newList:
    if a not in oldList:
        addList.append(a)

for d in oldList:
    if d not in newList:
        delList.append(d)

print(differences identified)

crear nuevas tablas para anexar a resultados

arcpy.CreateTable_management(M:\GISTransfer\BOD_Round_Project\Relaunch, Additions.dbf, newDBF)
arcpy.CreateTable_management(M:\GISTransfer\BOD_Round_Project\Relaunch, Deletions.dbf, oldDBF)

with arcpy.da.InsertCursor(Additions.dbf, fld) as addCursor:
    for add in addList:
        addCursor.insertRow(add)

with arcpy.da.InsertCursor(Deletions.dbf, fld) as deLCursor:
    for deL in delList:
        deLCursor.insertRow(deL)

print(results appended)
print(script complete)
Publicado el 14/02/2020 a las 00:04
fuente por usuario
En otros idiomas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more