Hoe de verschillen tussen twee datasets in Python vinden?

stemmen
0

Dit script is bedoeld om twee afzonderlijke Excel-bestanden te vergelijken voor verschillen en schrijf dan de toevoegingen en de verwijderingen in nieuwe tabellen. De Meter_No veld is hoe ik de rij te identificeren. Ik heb dit script om een ​​uitvoer te produceren gekregen, maar de enige informatie is voor het veld Ik ben op zoek. Ik ben goed op de hoogte van de reden waarom dit gebeurt, maar kan niet achterhalen van de juiste oplossing. Ik wil graag een volledige rij van informatie in de uiteindelijke output, met inbegrip van de andere velden.

Ik weet dat de asterisk gebruiken om alle velden terug te keren in de zoektocht cursor, maar ik wil de zoektocht zelf van toepassing zijn op het veld Meter_No. Ik denk ergens in de lus is waar ik nodig om het te doen. Alle hulp zou worden gewaardeerd.

Ook, ik ben nieuw op python, dus ik zou willen vasthouden aan wat er in de arcpy bibliotheek. Ik weet dat dit script is niet optimaal, maar het is op een manier die ik kan begrijpen.

importmodules

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

print(modules imported)

set variabelen

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)

Excel-bestanden converteren naar tabellen

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)

eerst zoeken cursor naar het nieuwe Excel-bestand te scannen

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

tweede zoektocht cursor naar het oude excel bestand te scannen

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

print(searches complete)

het vinden van de verschillen tussen de twee

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)

het creëren van nieuwe tabellen om de resultaten te voegen

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)
De vraag is gesteld op 13/02/2020 om 22:04
bron van user
In andere talen...                            

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