我有与此表类似的表:
id val
0 abc_1 5
1 abc_1 3
2 abc_1 7
3 abc_2 12
4 abc_2 6
5 abc_2 9
...
我想根据id将行“拆分”为列,所以结果应该是:
id val1 val2 val3
0 abc_1 5 3 7
1 abc_2 12 6 9
我试图通过创建组然后使用枢轴来做到这一点:
df['group'] = (df.index // 3) + 1
>>>
id val group
0 abc_1 5 1
1 abc_1 3 1
2 abc_1 7 1
3 abc_2 12 2
4 abc_2 6 2
5 abc_2 9 2
但是当我使用数据透视表时,我得到了许多带有空值的新列。
我的目标是获得所需的输出,并对其他解决方案开放。
...
id val1 val2 val3
0 abc_1 5 3 7
1 abc_2 12 6 9
一个可能的解决方案:
N=3
df.assign(val_names = [f'val{i}' for i in list(range(1, N+1))*2]).pivot(index='id', columns='val_names', values='val')