2016-07-29 195 views
0

我有以下數據幀:重塑數據幀水平

data = [['label1', 1234], ['label1', 12345], ['label2', 2345], ['label2', 4567], ['label3', 123], ['label2', 4589]] 
pd.DataFrame(data, columns=['label', 'id']) 

輸出:

label id 
0 label1 1234 
1 label1 12345 
2 label2 2345 
3 label2 4567 
4 label3 123 
5 label2 4589 

我想數據重塑爲以下:

label id1 id2 id3 
0 label1 1234 12345 None 
1 label2 2345 4567 4589 
2 label3 123 None None 

基本上水平佈置ID,並向ID添加唯一標籤,並在標籤上鍵入每行。

我在看大熊貓的旋轉操作,我似乎無法弄清楚我需要的確切咒語以獲得輸出所需格式的數據。

任何幫助將不勝感激!

回答

3

分配一個新列列舉的ID,然後使用透視:

(df.assign(ids='id' + (df.groupby('label').cumcount()+1).astype(str)) 
    .pivot(index='label', columns='ids', values='id')) 
Out: 
ids  id1  id2  id3 
label       
label1 1234.0 12345.0  NaN 
label2 2345.0 4567.0 4589.0 
label3 123.0  NaN  NaN