回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>事先谢谢你的帮助。你知道吗</p>
<p>我试图采取一个csv文件,其中包括一个特定日期的特定ID的相对频率列表,并按日期合并所有数据,以便第二个csv文件有一个独特的日期和每个ID在该日期的合并相对频率列表。你知道吗</p>
<p>第一个CSV文件(具有重复日期)如下所示:</p>
<pre><code>ID,Date,Relfreq
CR,10061,9.01E-07
CR,10061,9.01E-07
TPN,10062,5.42782E-06
TPN,10062,8.14173E-06
TPN,10062,5.42782E-06
TPN,10062,8.14173E-06
TPN,10062,0.000179118
CR,10062,7.02E-07
CR,10062,1.05307E-06
CR,10062,7.02E-07
CR,10062,1.75512E-06
CR,10062,1.05307E-06
TPN,10070,1.99831E-05
TPN,10070,9.99156E-06
</code></pre>
<p>第二个CSV文件(只有唯一的日期)如下所示:</p>
<pre><code>Date,TPN,CR
10050,0,0
10051,0,0
10052,0,0
10060,0,0
10061,0,0
10062,0,0
10070,0,0
10071,0,0
10072,0,0
</code></pre>
<p>我需要脚本查看第一个文件,并为每个日期的每个ID添加所有相对频率。因此,例如,它应该添加Relfreq下ID为“CR”和日期为“10062”的所有值,并分别添加Relfreq下ID为“TPN”和日期为“10062”的所有值。然后我希望它查看第二个文件,找到“10062”,并将TPN Relfreq的和添加到第二列(标记为“TPN”)和第3列(标记为“CR”)的CR的总和。你知道吗</p>
<p>我已经写了下面的脚本,但我不确定它是否真的在做我想要的事情,并将错误打印在下面:</p>
<pre><code>import unicodecsv
import csv
import io
import math
from decimal import *
alist, blist = [], []
with open("wholetopic.csv", "rU") as fileA:
reader = csv.reader(fileA, delimiter=',')
for row in reader:
alist.append(row)
with open("date.csv", "rU") as fileB:
reader = csv.reader(fileB, delimiter=',')
for row in reader:
blist.append(row)
TPNlist, CRlist = [],[]
c = csv.writer(open("finaltopic.csv", "a"))
for brow in blist:
dateB = brow[0]
for arow in alist:
dateA = arow[1]
ID = arow[0]
RF = arow[2]
if dateB == dateA:
if ID == "TPN":
TPNlist.append(RF)
else:
if ID == "CR":
CRlist.append(RF)
continue
TPNsum = sum(TPNlist)
CRsum = sum(CRlist)
values = dateB,TPNsum,CRsum
c.writerow(values)
print "Done!"
</code></pre>
<p>错误如下:</p>
<pre><code> File "consolidatedates.py", line 34, in <module>
TPNsum = sum(TPNlist)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
</code></pre>