Πώς να βρείτε τις διαφορές μεταξύ των δύο συνόλων δεδομένων στην Python;

ψήφοι
0

Αυτό το σενάριο έχει ως στόχο να συγκρίνετε δύο ξεχωριστά αρχεία excel για τις διαφορές και στη συνέχεια να γράψει τις προσθήκες και τις διαγραφές σε νέους πίνακες. Το πεδίο «Meter_No» είναι το πώς είμαι προσδιορισμό της σειράς. Έχω πάρει αυτό το σενάριο να παράγει μια έξοδο, αλλά οι μόνες πληροφορίες που περιέχονται είναι για το πεδίο ψάχνω. Είμαι πολύ καλά γιατί συμβαίνει αυτό, αλλά δεν μπορώ να καταλάβω τη σωστή λύση. Θα ήθελα μια πλήρη σειρά των πληροφοριών στην τελική έξοδο, συμπεριλαμβανομένων και των άλλων τομέων.

Ξέρω να χρησιμοποιήσετε τον αστερίσκο για να επιστρέψει όλα τα πεδία του δρομέα αναζήτησης, αλλά θέλω να εφαρμόζουν την ίδια την έρευνα στο πεδίο «Meter_No». Σκέφτομαι κάπου στο βρόχο for είναι που πρέπει να το κάνουμε. Οποιαδήποτε βοήθεια θα εκτιμηθεί.

Επίσης, είμαι νέος σε 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)

πρώτο δρομέα αναζήτησης για να σαρώσετε το νέο αρχείο excel

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

δεύτερο δρομέα αναζήτησης για να σαρώσει το παλιό αρχείο excel

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)
Δημοσιεύθηκε 13/02/2020 στις 22:04
πηγή χρήστη
Σε άλλες γλώσσες...                            

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