目前,我正在尝试将一列强制转换为多个列,并相应地对其内容求和,即整理数据帧的长度。例如,我们有一个名为year
的列,其值从2014年到2016年。其次,我们还有一个sales
列,其值为amount。我想把year
转换成2014
,2015
&2016
与特定年份对应的sales
之和。原始的sales
可以删除,也可以显示所有年份的总销售额
通过使用Pandas groupby()函数、agg()和transform()我试图找到一个解决方案,但没有任何优势first、second。也就是说,我似乎无法找到创建2014
等列的解决方法
假设以下数据帧:
df = pd.DataFrame({'CustomerId':[1,1,1,2,2,2,3,3,3,4,4,4,5,5,5],
'CustomerName': ['McNulty','McNulty','McNulty',
'Bunk','Bunk','Bunk',
'Joe','Joe','Joe',
'Rawls','Rawls','Rawls',
'Davis','Davis','Davis'],
'Sales':np.random.randint(1000,1500,15),
'Year':[2014,2015,2016,2014,2015,2016,2014,2015,2016,
2014,2015,2016,2014,2015,2016]})
预期产出应如下:
CustomerId CustomerName Sales 2014 2015 2016
1 McNulty 3300 1050 1050 1200
2 Bunk 3500 1100 1200 1200
3 Joe 3900 1300 1300 1300
4 Rawls 3500 1000 1000 1500
5 Davis 3800 1600 1100 1100
您可以使用^{} :
[输出]
使用
pivot_table
并展平多索引列,最后计算axis=1
上的sum
:输出
相关问题 更多 >
编程相关推荐