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: 18270
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: 14047
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@MacGruber: `agg()` mit einer entsprechenden Funktion würde ich vermuten.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
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: 14047
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]
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
MacGruber
User
Beiträge: 63
Registriert: Sonntag 28. Mai 2017, 13:04

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