Das Gegenteil von Explode

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

Moin,

gibt es eine Funktion in Pandas die das Gegenteil von Explode macht?
Ich möchte aus einem DF wie diesem...

Person;Haustier;Auto
"Person1";"Hund";"Corsa"
"Person1",Katze";"Kuga"
"Person2",Katze";"Golf"
"Person1",Hamster";"Golf"
"Person2",Schlange";"Bulli"

...einen DF wie diesen machen....

Person;Haustier;Auto
"Person1";["Hund", "Katze", "Hamster"];["Corsa", "Kuga", "Golf"]
"Person2",["Katze", "Schlange"];["Golf", "Bulli"]

Wisst ihr weiter?

Gruß
Sirius3
User
Beiträge: 18220
Registriert: Sonntag 21. Oktober 2012, 17:20

Du suchst groupby
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

Hi Sirius
daran habe ich auch schon gedacht, aber keine passende Unterfunktion gefunden. Mit Unterfunktion meine ich sowas wie min, max und sum. Was muss ich den da verwenden?
Benutzeravatar
__blackjack__
User
Beiträge: 13927
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@MacGruber: `agg()` mit einer entsprechenden Funktion würde ich vermuten.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

Ich denke ich habe es jetzt. Mit groupby und apply(set) kann ich die einzelnen Spalten zusammenfassen und anschließend merge ich sie zu einem gemeinsamen DF.
Eine Methode um alle Spalten gleichzeitig zusammenzufassen, habe ich leider nicht gefunden.
Benutzeravatar
__blackjack__
User
Beiträge: 13927
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@MacGruber: Wie gesagt: `agg()` mit entsprechender Funktion:

Code: Alles auswählen

In [99]: df                                                                     
Out[99]: 
    Person  Haustier   Auto
0  Person1      Hund  Corsa
1  Person1     Katze   Kuga
2  Person2     Katze   Golf
3  Person1   Hamster   Golf
4  Person2  Schlange  Bulli

In [100]: df.groupby("Person").agg(list)                                        
Out[100]: 
                       Haustier                 Auto
Person                                              
Person1  [Hund, Katze, Hamster]  [Corsa, Kuga, Golf]
Person2       [Katze, Schlange]        [Golf, Bulli]
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

Cool. Hat super funktioniert. Vielen Dank!!!
Antworten