我有以下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添加唯一标签,每行都在标签上键入。
我正在研究大熊猫中的旋转操作,我似乎无法弄清楚我需要以输出所需的格式获取数据的确切咒语。
非常感谢任何帮助!
答案 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