2017-02-05 2 views
1

Angenommen wir eine Pandas Datenrahmen mit Struktur haben: Id | number |seq| a | 1 | X | a | 3 | Z | b | 1 | P | b | 6 | G | b | 5 | C | Pandas - Effizientes concat Zeilen basierend auf Gruppe und Spaltenwerte

und das gewünschte Ergebnis ein Datenrahmen ist, die wie folgt aussieht: Id |new_seq| a | XZ | b | PCG |

Das heißt, die new_seq Spalte ist seq gruppiert von Id, und folgt der Reihenfolge wie durch number Spalte angezeigt.

Welche Möglichkeiten gibt es, diesen Vorgang effizient zu implementieren?

Antwort

3

können Sie sort_values mit groupby verwenden und applyjoin:

print (df.sort_values(['Id', 'number'])) 
    Id number seq 
0 a  1 X 
1 a  3 Z 
2 b  1 P 
4 b  5 C 
3 b  6 G 

df = df.sort_values(['Id', 'number']) 
     .groupby('Id', sort=False).seq 
     .apply(''.join) 
     .reset_index(name='new_seq') 

print (df) 
    Id new_seq 
0 a  XZ 
1 b  PCG 
+0

Funktioniert prima, danke. – lpounng

Verwandte Themen