Cum de a găsi diferențele dintre cele două seturi de date în Python?

voturi
0

Acest script este menit să compare două fișiere separate Excel pentru diferențele și apoi scrie adăugările și eliminările la noi tabele. Câmpul „Meter_No“ este modul în care eu sunt identificarea rândului. Am ajuns acest script pentru a produce o ieșire, dar singurele informații conținute sunt pentru câmpul Sunt căutați. Sunt conștient de ce se întâmplă acest lucru, dar nu pot da seama fix dreapta. Aș dori un rând complet de informații în rezultatul final, inclusiv celelalte domenii.

Eu știu să folosească asteriscul pentru a returna toate câmpurile din cursorul de căutare, dar vreau să se aplice căutarea în sine în câmpul „Meter_No“. Mă gândesc undeva în buclă este locul unde am nevoie să o fac. Orice ajutor ar fi apreciat.

De asemenea, sunt nou la Python, așa că am vrea să rămânem la ceea ce este conținut în biblioteca arcpy. Știu că acest scenariu nu este optimă, dar este într-un mod pe care le pot înțelege.

module de import

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

print(modules imported)

set de variabile

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)

converti fișiere Excel în tabele

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)

mai întâi cursorul de căutare pentru a scana noul fișier Excel

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

a doua căutare cursorul pentru a scana fișierul vechi Excel

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

print(searches complete)

găsirea diferențelor dintre cele două

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)

a crea noi tabele pentru a adăuga la rezultate

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)
Întrebat 13/02/2020 la 22:04
sursa de către utilizator
În alte limbi...                            

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