将pandas中的数据帧重新整形为水平布局数据

时间:2016-07-29 16:32:07

标签: python pandas reshape

我有以下DataFrame:

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添加唯一标签,每行都在标签上键入。

我正在研究大熊猫中的旋转操作,我似乎无法弄清楚我需要以输出所需的格式获取数据的确切咒语。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

指定一个新列来枚举id,然后使用pivot:

(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