[HOW TO?] Arrays vergleichen und Datensätze zusammenfügen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
KrachBumm
User
Beiträge: 18
Registriert: Mittwoch 27. Juli 2016, 07:50

Hallo,

ich bin neu hier, und hoffe, dass ich auf Anhieb das richtige Forum für meine Frage gefunden habe. Falls nicht bitte ich das zu entschuldigen.

Ich brauche Hilfe bei einer Problemlösung.
Momentan bin ich dabei ein Tool für eine Berechnung von Faktura-Daten zu erstellen. Hierbei müssen im Vorfeld Daten eingelesen werden. Soweit kein Problem. Bei den Daten handelt es sich um eine excel-Datei, die aber nicht vollständig ist. Die Datensätze müssen mit den Daten aus einer zweiten Datei verglichen werden und anhand eines Kennzahl ergänzt werden.

Genauer beschrieben:

Datei 1 beinhaltet Datensätze inklusive der Spalte Equipmentnummer.

Datei 2 beinhaltet Datensätze inklusive der Spalte Equipmentnummer und Technikart.

Ich muss die Datensätze aus Datei 1 und 2 miteinander anhand der Equipmentnummer vergleichen und die Datensätze aus Datei 1 um die Technikart aus Datei 2 erweitern.

Nun bin ich noch ziemlich am Anfang meines Python-Lebens und bin bischen ratlos, wie ich das lösen soll. Bzw. ist mir klar, dass ich die beiden Dateien in Arrays einlesen kann, weiss dann nur nicht, wie ich die Abfrage und das ergänzen der Datensätze lösen kann.

Ich würde mich freuen, wenn ihr mir mit Ideen ein bischen helfen könntet.

lg

Damian
BlackJack

@KrachBumm: Schau Dir mal Pandas an. Für konkretere Antworten müsstest Du etwas konkreter beschreiben was Du machst/versuchst und mit welchen Bibliotheken Du arbeitest. Eventuell wäre auch interessant was mit den Daten danach passieren soll.
KrachBumm
User
Beiträge: 18
Registriert: Mittwoch 27. Juli 2016, 07:50

Hallo BlackJack,

Vielen Dank erstmal für deine Antwort. Pandas hat mich auf jeden Fall schon mal in die richtige Richtung gelenkt. Ich kann mit Pandas nun meine Daten bequem in Python einlesen und soweit reduzieren, dass ich in zwei Listen die benötigten Daten habe.

Hier mal ein Ausschnitt aus den beiden Listen, um zu erklären was ich machen möchte:

Liste 1: (gekürzt, da die anderen Spalten hierfür nicht wichtig sind!)

Code: Alles auswählen

       FAK-ART    FAK-DAT  LEIST-DAT      KD-CRM MW-BW       EQ-NR MATERIAL  \
1         ZPAF 2015-05-18 2015-05-31         TMD     E  1003594714  G230ETS   
2         ZPAF 2015-05-18 2015-05-31         TMD     B  1000943473  G230ETS   
3         ZPAF 2015-05-18 2015-05-31         TMD     E  1000943608  G230ETS   
4         ZPAF 2015-05-18 2015-05-31         TMD     B  1000943704  G230ETS   
5         ZPAF 2015-05-18 2015-05-31         TMD     E  1000943823  G230ETS   
6         ZPAF 2015-05-18 2015-05-31         TMD     B  1000943985  G230ETS   
7         ZPAF 2015-05-18 2015-05-31         TMD     E  1000954774  G230ETS   
8         ZPAF 2015-05-18 2015-05-31         TMD     B  1000954790  G230ETS   
9         ZPAF 2015-05-18 2015-05-31         TMD     E  1000955082  G230ETS   
10        ZPAF 2015-05-18 2015-05-31         TMD     B  1000955097  G230ETS   
11        ZPAF 2015-05-18 2015-05-31         TMD     E  1001415563  G230ETS   
12        ZPAF 2015-05-18 2015-05-31         TMD     B  1001415566  G230ETS   
13        ZPAF 2015-05-18 2015-05-31         TMD     E  1001415569  G230ETS   
14        ZPAF 2015-05-18 2015-05-31         TMD     B  1003116180  G230ETS   
15        ZPAF 2015-05-18 2015-05-31         TMD     E  1003189748  G230ETS   
16        ZPAF 2015-05-18 2015-05-31         TMD     B  1003189752  G230ETS   
17        ZPAF 2015-05-18 2015-05-31         TMD     E  1003189753  G230ETS 
Liste 2:

Code: Alles auswählen

             EQ-NR         TA
0       1003594714  SONSTIGES
1       1000943473        NaN
2       1000943608  Sonstiges
3       1000943704  Sonstiges
4       1000943823  Sonstiges
5       1000943985  Sonstiges
6       1000954774       FMED
7       1000954790       FMED
8       1000955082        SDH
9       1000955097        NaN
10      1001415563  Sonstiges
11      1001415566  Sonstiges
12      1001415569  SONSTIGES
13      1001496157        NaN
14      1003116180        NaN
15      1003189748        NaN
16      1003189752        NaN
17      1003189753        NaN
Wie man sieht, haben beide Listen die Spalte "EQ-NR". Liste 1 hat ca. 400000 Datensätze und Liste 2 ca. 160000. Die EQ-NR in der Liste 2 definiert mir die Technikart (TA), welche mir in Liste 1 fehlt. Ich müsste jetzt wissen, wie ich die Spalten "EQ-NR" aus Liste 1 und 2 vergleichen kann und dann bei übereinstimmender Nummer die Technikart in die Liste 1 anfügen kann. Das muss natürlich an der passenden Stelle passieren.

Einfach gesagt: Liste1-EQ-Nr. = Liste2-EQ-Nr. => TA an Datensatz aus Liste1 anfügen.

Ich brauche diese Daten um später Berechnungen durchzuführen und diese über die Technikart zu sortieren.

Hoffentlich konnte ich bischen Licht ins Dunkel bringen. Vielleicht habt ihr hier ja eine Idee.

Vielen Dank schon mal!

Damian
BlackJack

Du suchst anscheinend Database-style DataFrame joining/merging in der Pandas-Dokumentation.
KrachBumm
User
Beiträge: 18
Registriert: Mittwoch 27. Juli 2016, 07:50

Danke! Damit klappts! Vielen Dank ;)
Antworten