擅长:python、mysql、java
<p>对于Python,使用<a href="http://docs.python.org/2/library/itertools.html#itertools.groupby" rel="nofollow">^{<cd1>}</a>对第二列上的行进行分组,并使用<a href="http://docs.python.org/2/library/functions.html#enumerate" rel="nofollow">^{<cd2>}</a>提供的计数器:</p>
<pre><code>import csv
from itertools import groupby
from operator import itemgetter
with open(inputfile, 'rb') as ifh, open(outputfile, 'wb') as ofh:
reader = csv.reader(ifh, delimiter='\t')
writer = csv.writer(ofh, delimiter='\t')
writer.writerow(next(reader)) # copy across header
for counter, (key, group) in enumerate(groupby(reader, itemgetter(1)), 1):
for row in group:
row[1] = counter
writer.writerow(row)
</code></pre>
<p>这将使用相同的数据写入一个新的CSV文件,除了第二列被一个计数器(从1开始)替换,该计数器在第2列中的原始值每次更改时递增。你知道吗</p>