在 pandas 数据框中将行拆分为列

问题描述 投票:0回答:1

我有与此表类似的表:

     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
python pandas pivot-table
1个回答
0
投票

一个可能的解决方案:

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')
© www.soinside.com 2019 - 2024. All rights reserved.