回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我在CSV文件中有一个数据集。下面是一个示例:</p>
<pre><code>Time,Location,Companyid,Metrics,Amount
2012Q1,AK_995,A,Sales,8820156.363
2012Q1,AK_995,B,Revenue,28392730.51
2012Q1,AK_995,C,Sales,6980332.166
2012Q1,AK_996,B,Revenue,1894254.13
2012Q1,AK_996,A,Sales,4664103.766
2012Q2,AK_995,C,Sales,7980332.166
</code></pre>
<p>这里的<code>time</code>是年份和季度,<code>location</code>是带有ID的状态符号,因此每个状态可以有多行,每个<code>companyid</code>具有不同的ID。我想做的是,对于每个<code>companyid</code>,我想为每个特定的<code>time</code>添加一个特定状态的所有<code>amount</code>。例如,在上面的示例中,<code>companyid</code>1有两条记录<code>time</code><code>2012Q1</code>-一条记录<code>AK_995</code>,另一条记录<code>AK_996</code>。我想在这两个值中加上amount,把AK作为<code>location</code>,得到一个值为<code>2012Q1,AK,1,13484260.129</code>的记录。对于所有状态,这应该在每个<code>company</code>期间进行。注意,<code>amounts</code>跨<code>time</code>不应添加,因为上面的示例<code>companyid</code><code>3</code>有2条记录,它们的状态相同,但时间段不同。另外,我只想在<code>Metrics</code>是<code>Sales</code>的地方这样做,所以我想删除<code>Metrics</code>不是{<cd22>}的任何行,并且不要在聚合中添加这些数量。在</p>
<p>我还想将输出写入另一个csv文件。我该怎么做?在</p>
<p><strong>更新部分:</strong></p>
<p>根据<strong>@MichaelLaszlo</strong>的建议,我有这个代码。代码似乎有一个问题。在输出文件中,我希望将特定<code>companyid</code>的所有记录放在一起。一个<code>companyid</code>中记录的顺序应该是按<code>time</code>的顺序递增(特定位置的记录为特定的<code>companyid</code>聚集在一起)。例如,如果有一个<code>companyid</code><code>B</code>,那么<code>companyid</code><code>B</code>的所有记录都应该在一起,顺序如下:</p>
^{pr2}$
<p>如上所示,<code>companyid</code><code>B</code>的所有记录都在一起,<code>companyid</code><code>B</code>内,特定{<cd2>}的记录按<code>time</code>的顺序排列在一起。在我当前的输出中,我得到了所有分散的<code>companyids</code>的记录。我目前的代码是:</p>
<pre><code>totals = {}
# Aggregate sales by quarter, state, and company.
for row in csv.reader(open('data.csv')):
if row[3] == 'Sales':
key = (row[0], row[1][:2], row[2])
totals[key] = totals.setdefault(key, 0) + float(row[4])
# Write aggregated data to file.
with open('aggregated.csv', 'w') as out_file:
writer = csv.writer(out_file)
for key, value in totals.items():
row = list(key) + [value]
writer.writerow(row)
</code></pre>
<p>我当前的示例输出是:</p>
<pre><code>time,state,companyid,amount
2014Q4,AL_,B,547991592.5101689
2014Q1,NV_,B,387534045.40654004
2012Q3,SC_,A,333657617.05835015
2014Q4,DC_,C,54022786.60577
2014Q3,TN_,B,594121931.7221502
</code></pre>
<p>如您所见,<code>companyid</code><code>B</code>的记录是分散的,我希望输出的顺序与我在更新部分中提到的顺序一致。在</p>