回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>目前,我正在尝试将一列强制转换为多个列,并相应地对其内容求和,即整理数据帧的长度。例如,我们有一个名为<code>year</code>的列,其值从2014年到2016年。其次,我们还有一个<code>sales</code>列,其值为amount。我想把<code>year</code>转换成<code>2014</code>,<code>2015</code>&<code>2016</code>与特定年份对应的<code>sales</code>之和。原始的<code>sales</code>可以删除,也可以显示所有年份的总销售额</p>
<p>通过使用Pandas groupby()函数、agg()和transform()我试图找到一个解决方案,但没有任何优势<a href="https://stackoverflow.com/questions/42078258/pandas-groupby-and-aggregate-into-new-column">first</a>、<a href="https://stackoverflow.com/questions/52663402/python-pandas-group-by-and-aggregate-columns">second</a>。也就是说,我似乎无法找到创建<code>2014</code>等列的解决方法</p>
<p>假设以下数据帧:</p>
<pre><code>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]})
</code></pre>
<p>预期产出应如下:</p>
<pre><code>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
</code></pre>