【发布时间】:2019-12-22 15:33:46
【问题描述】:
目前我正在尝试将一列转换为几列并相应地汇总其内容,即整理数据框的长度。例如,我们有一个名为 year 的列,其值从 2014 年到 2016 年。其次,我们还有一个列 sales 的金额。我想要的是将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
【问题讨论】:
标签: python pandas pandas-groupby