2016-07-29 7 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