Como encontrar as diferenças entre dois conjuntos de dados em Python?

votos
0

Este script é utilizado para comparar dois arquivos do Excel separados para diferenças e, em seguida, escrever as adições e as exclusões novas tabelas. O campo Meter_No é como eu estou identificando a linha. Eu recebi este script para produzir uma saída, mas a única informação contida é para o campo que eu estou procurando. Estou bem ciente de que isso está acontecendo, mas não consigo descobrir a correção direita. Eu gostaria de uma linha completa de informações na saída final, incluindo os outros campos.

Eu sei usar o asterisco para retornar todos os campos no cursor de pesquisa, mas eu quero aplicar a própria pesquisa para o campo Meter_No. Estou pensando em algum lugar do loop for é onde eu preciso fazê-lo. Qualquer ajuda seria apreciada.

Além disso, eu sou novo para python assim que eu gostaria de ficar com o que está contido na biblioteca arcpy. Eu sei que este script não é o ideal, mas é de uma maneira que eu possa entender.

módulos de importação

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

print(modules imported)

variáveis ​​definidas

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)

converter arquivos do Excel nas tabelas

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)

primeiro cursor de pesquisa para digitalizar o novo arquivo excel

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

segundo cursor de pesquisa para digitalizar o arquivo excel velho

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

print(searches complete)

encontrar as diferenças entre os dois

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)

criar novas tabelas para acrescentar resultados aos

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)
Publicado 14/02/2020 em 00:04
fonte usuário
Em outras línguas...                            

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