Ich muss ein Python-Listenobjekt oder ein beliebiges Objekt aus einem pandas-DataFrame-Objekt erstellen, das Teile von Werten aus verschiedenen Zeilen gruppiert

8

My DataFrame hat eine Zeichenfolge in der ersten Spalte und eine Nummer in der zweiten Spalte:

%Vor%

Ich möchte diesen Datenrahmen manipulieren, um ein Listenobjekt zu erhalten, das eine Zeichenfolge enthält, die aus dem fünften Zeichen für jeden "GEOSTRING" -Wert für jeden unterschiedlichen "IDactivity" -Wert besteht. In diesem Fall habe ich 3 verschiedene "IDactivity" -Werte und ich habe in meinem Listenobjekt 3 Strings, die so aussehen:

%Vor%

wo wiederum die Symbole, die Sie in jeder Zeichenkette sehen, der fünfte Wert jedes "GEOSTRING" -Werts sind.

Was ich frage, ist eine Lösung oder ein Ansatz, der keine zu komplizierte for -Schleife beinhaltet und so effizient wie möglich ist, da ich viele Daten manipulieren muss. Ich möchte, dass es sauber und schnell ist.

Ich hoffe, es ist klar genug.

    
zampero 08.07.2017, 21:29
quelle

2 Antworten

9

Dies kann leicht wie folgt als ein Liner durchgeführt werden: (gilt auch als ziemlich schnell)

%Vor%

gruppiert den Datenrahmen nach Werten von IDactivity und wählt dann aus jeder entsprechenden Zeichenfolge von GEOSTRING column das fünfte Element (Index 4) aus und verbindet es mit den anderen entsprechenden Zeichenfolgen. Schließlich fügen wir tolist() method hinzu, um die Ausgabe als Liste nicht Pandas Serie zu erhalten.

Ausgabe:

%Vor%

Dokumentation:

pandas.groupby
pandas.apply

    
Rayhane Mama 08.07.2017, 21:45
quelle
1

Hier ist eine Lösung mit einer temporären Spalte und einer Inspiration für die Schlüsseloperation von diese Antwort :

%Vor%

Ergebnis:

%Vor%     
cmaher 08.07.2017 21:46
quelle

Tags und Links