2017-05-26 3 views
0

Ich habe folgende df:Wie pandas Datenrahmen neu zu formen?

id points 
0 1 (2,3) 
1 1 (2,4) 
2 1 (4,6) 
3 5 (6,7) 
4 5 (8,9) 

Ich versuche, den folgenden Datenrahmen zu erhalten:

id points 
0 1  (2,3), (2,4), (4,6) 
1 5  (6,7), (8,9) 

Bitte machen Sie mich den erwarteten Datenrahmen zu erhalten.

+0

Sind 'points' eigentlich' tuple' oder 'str'? – piRSquared

+1

Ein 'Dataframe' scheint mir die falsche Datenstruktur zu sein. Tupel als Elemente bereits zu haben ist eine rote Flagge, aber die, die Sie in ein Tupel-Tupel zusammenfassen möchten ... Warum nicht einfach ein "Diktat"? –

+0

Ich habe die Punkte Spalte nach dem Zippen von zwei separaten Spalten – Liza

Antwort

3

Wenn points sind tuple

df.groupby('id').points.apply(list).reset_index() 

    id     points 
0 1 [(2, 3), (2, 4), (4, 6)] 
1 5   [(6, 7), (8, 9)] 

Wenn Sie ein wünschen array

df.groupby('id').points.apply(lambda x: np.array(x.values.tolist())).reset_index() 

    id     points 
0 1 [[2, 3], [2, 4], [4, 6]] 
1 5   [[6, 7], [8, 9]] 

Wenn points sind str

df.groupby('id').points.apply(', '.join).reset_index() 

    id    points 
0 1 (2,3), (2,4), (4,6) 
1 5   (6,7), (8,9) 
+0

Vielen Dank, die erste Methode für Tupel gearbeitet. Gibt es auch eine Möglichkeit, wie ich eine Liste von Array anstelle von Tupel-Liste in jeder Zeile wie - [[2,3], [2,4], [4,6]] – Liza

+1

@Liza Post erhalten konnte – piRSquared

Verwandte Themen