Seite 1 von 1

Mehrere Werte mit einem Trennzeichen in einem Eintrag

Verfasst: Freitag 14. Februar 2020, 12:28
von MacGruber
Hallo werte Forumsmitglieder,

Thema meines heutigen Hilferufs lässt sich der sich wohl am ehesten dem der Datenverarbeitung zuordnen. Folgendes Problem habe ich dabei. Ich habe eine CSV mit nur drei Spalten, aber dafür mit mehreren Millionen Zeilen. Meine Spalten lauten wie folgt:
  • Komponente (String-Werte)
  • Menge (Integer-Werte
  • Merkmal (String-Werte)
Jetzt zu meinem Problem. Während für Komponente und Menge in jeder Zeile nur ein Wert genannt wird, kann bei Merkmal ein Wert oder gleich mehrere Werte genannt werden. Bei Mehrfachnennung dient das Semikolon als Trennzeichen. Ich würde gerne mit Pandas die CSV als Dataframe einladen und immer bei jeder Zeile, die über mehrere Merkmalwerte pro Zeile verfügt, die Werte auftrennen und über mehrere Zeilen aufteilen. Die Einträge für Komponente und Menge sollen in diesen neuen Zeilen dann natürlich auch enthalten sein.


Vorher:
Komponente Menge Merkmal
K1 5 M1
K2 6 M1;M2;M4
K3 2 M3

Nachher:
Komponente Menge Merkmal
K1 5 M1
K2 6 M1
K2 6 M2
K2 6 M4
K3 2 M3

Bislang ist mir noch keine Lösung einfallen und Recherchen haben auch nichts ergegeben. Am liebsten würde ich das mit Pandas und irgendwelchen Dataframe Methoden machen, da der Importvorgang der CSV auch über Pandas läuft. Mit Listen und Schleifenoperation bin ich zwar in der Lage mir das Problem selber zu lösen, aber lieber würde ich eine nachhalteige Methode kennen lernen mit der ich in Zukunft Probleme dieser Art immer wieder schnell lösen kann.

Ich danke jetzt schon für eure Hilfe.

Gruß Sascha

Re: Mehrere Werte mit einem Trennzeichen in einem Eintrag

Verfasst: Freitag 14. Februar 2020, 13:44
von __blackjack__
Du suchst 💥:

Code: Alles auswählen

In [318]: df                                                                    
Out[318]: 
  Komponente  Menge   Merkmal
0         K1      5        M1
1         K2      6  M1;M2;M4
2         K3      2        M3

In [319]: df["Merkmal"] = df["Merkmal"].str.split(";")                          

In [320]: df                                                                    
Out[320]: 
  Komponente  Menge       Merkmal
0         K1      5          [M1]
1         K2      6  [M1, M2, M4]
2         K3      2          [M3]

In [321]: df.explode("Merkmal")                                                 
Out[321]: 
  Komponente  Menge Merkmal
0         K1      5      M1
1         K2      6      M1
1         K2      6      M2
1         K2      6      M4
2         K3      2      M3

Re: Mehrere Werte mit einem Trennzeichen in einem Eintrag

Verfasst: Freitag 14. Februar 2020, 13:45
von __deets__
Ich bin immer wieder fasziniert, was das Ding alles eingebaut hat. Und wie zur Hoelle man das jemals finden soll...

Re: Mehrere Werte mit einem Trennzeichen in einem Eintrag

Verfasst: Freitag 14. Februar 2020, 14:53
von MacGruber
Genial. Vielen lieben Dank. Das hilft mir enorm weiter :)