2017-05-26 75 views
0

我有以下DF:如何重新塑造熊貓數據框架?

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

我想獲得以下數據幀:

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

請給我建議,以獲得預期的數據幀。

+0

是'points'實際上'tuple'或'str'? – piRSquared

+1

'Dataframe'讓我感覺像錯誤的數據結構。已經有元組作爲元素是紅色的標誌,但是你想聚合成一個元組元組......爲什麼不只是一個'dict'? –

+0

我在壓縮兩個單獨的列之後得到了點列 – Liza

回答

3

如果pointstuple

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

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

如果你想要一個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]] 

如果pointsstr

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

非常感謝,第一個用於元組的方法奏效。另外,有沒有辦法我可以得到一個數組列表,而不是每行中的元組列表 - [[2,3],[2,4],[4,6]] – Liza

+1

@Liza更新後發佈 – piRSquared