Jak znaleźć różnice między dwoma zbiorami danych w Pythonie?

głosy
0

Skrypt ten ma na celu porównanie dwóch oddzielnych plików Excel dla różnic, a następnie napisać uzupełnień i skreśleń nowych tabel. W „Meter_No” pole jest jak ja identyfikacji wiersz. Dostałam ten skrypt do produkcji wyjścia, ale tylko informacja zawarta jest w polu szukam. Jestem świadom, dlaczego tak się dzieje, ale nie można dowiedzieć się odpowiednią poprawkę. Chciałbym kompletny rząd informacji w ostatecznym wyjściem, w tym innych dziedzinach.

Wiem, aby użyć gwiazdki aby powrócić wszystkie pola w wyszukiwarce kursora, ale chcę, aby zastosować sam przeszukiwanie do „Meter_No” pola. Myślę, że gdzieś w pętli for, gdzie muszę to zrobić. Każda pomoc będzie mile widziane.

Również jestem nowym python więc chciałbym, aby trzymać się tego, co jest zawarte w arcpy bibliotece. Wiem, że ten scenariusz nie jest optymalna, ale w taki sposób, że mogę zrozumieć.

modułów importu

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

print(modules imported)

zmienne zestaw

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)

konwertować pliki Excel do tabel

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)

Pierwszy wyszukiwania kursor, aby zeskanować nowy plik excel

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

Drugi wyszukiwania kursor skanowanie starego pliku excel

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

print(searches complete)

znalezienie różnic pomiędzy tymi dwoma

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)

tworzyć nowe tabele, aby dołączyć wyniki do

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)
Utwórz 13/02/2020 o 22:04
źródło użytkownik
W innych językach...                            

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