Hvordan finne forskjellene mellom to datasett i Python?

stemmer
0

Dette skriptet er ment å sammenligne to separate Excel-filer for forskjeller og deretter skrive tilleggene og slettinger i nye tabeller. Den Meter_No -feltet er hvordan jeg identifiserer raden. Jeg har fått dette skriptet til å produsere en utgang, men den eneste informasjonen er for feltet jeg søker. Jeg er vel klar over hvorfor dette skjer, men kan ikke finne ut riktig løsning. Jeg vil gjerne ha en komplett rad med informasjon i det endelige resultatet, inkludert de andre feltene.

Jeg vet å bruke stjernen for å returnere alle feltene i søke markøren, men jeg ønsker å bruke til Meter_No -feltet søket selv. Jeg tenker et sted i for loop er der jeg trenger å gjøre det. Eventuelle hjelpe ville være verdsatt.

Også, jeg er ny på python så jeg ønsker å holde seg til det som finnes i arcpy biblioteket. Jeg vet at dette skriptet er ikke optimalt, men det er på en måte som jeg kan forstå.

import moduler

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

print(modules imported)

sett variabler

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)

konvertere Excel-filer til tabeller

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)

første søk markøren til å skanne den nye Excel-fil

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

andre søke markøren for å skanne gamle excel-filen

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

print(searches complete)

å finne forskjellene mellom de to

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)

skape nye tabeller som skal legges resultatene til

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)
Publisert på 14/02/2020 klokken 00:04
kilden bruker
På andre språk...                            

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