Как найти различия между двумя наборами данных в Python?

голоса
0

Этот скрипт предназначен для сравнения два отдельных файлов первенствовать различия, а затем писать дополнения и удаления в новые таблицы. Поле «Meter_No» как я идентифицирующий строку. Я получил этот сценарий, чтобы произвести выход, но только информация, содержащаяся для поля Я ищу. Я хорошо знаю, почему это происходит, но не могу понять, правильное исправление. Я хотел бы полную строку информации в конечной продукции, в том числе и в других областях.

Я знаю, чтобы использовать звездочку, чтобы возвратить все поля в поле поиска курсора, но я хочу, чтобы применить сам поиск в поле «Meter_No». Я думаю, где-то в течение цикла, где мне нужно это сделать. Любая помощь будет оценена.

Кроме того, я новичок в Python, так что я хотел бы придерживаться того, что содержится в arcpy библиотеке. Я знаю, что этот сценарий не является оптимальным, но это так, что я могу понять.

импорт модулей

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

print(modules imported)

набор переменных

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 файлов в таблицы

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)

первый поиск курсор сканировать новый файл первенствовать

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

второй поиск курсора сканировать старый первенствовать файл

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

print(searches complete)

найти различия между двумя

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)

создавать новые таблицы, приобщать результаты

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)
Задан 14/02/2020 в 00:04
источник пользователем
На других языках...                            

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