我有以下数据框:
name year0 id year month val1 val2 col
0 Agency 2009 COM3 2019 April 0.02 0.04 2019April
1 Agency 2009 COM3 2019 May 0.00 0.00 2019May
2 Agency 2010 FRE5 2019 April 0.00 0.00 2019April
3 Agency 2010 FRE5 2019 May 0.05 0.07 2019May
我希望将其从长转换为宽:
name year0 id val1 val2
2019April 2019May 2019April 2019May
0 Agency 2009 COM3 0.02 0.00 0.04 0.00
2 Agency 2010 FRE5 0.00 0.05 0.00 0.07
现在编写,我有以下代码:
df = df.pivot(index=None, columns='col', values=['val1', 'val2'])
但这会删除列name, year0, id, year, month
。我确实想删除year
和month
,因为col只是两者的串联,但是我想保留name, year0, id
不变。我该如何实现?
请注意,所有列都重复,因此不能用作索引。但是,可以使用name, year0, id
的组合。我尝试了相同的方法:
df = df.pivot(index=['name', 'year0', 'id'], columns='col', values=['val1', 'val2'])
但这给了我以下错误:
ValueError: Shape of passed values is (20011, 2), indices imply (3, 2)
我是熊猫新手,所以我可能缺少一些简单的东西。任何帮助表示赞赏!谢谢!