根据要求填写CSV文件中的一行

-1 投票
1 回答
566 浏览
提问于 2025-04-20 21:39

这里有一个我想用Python更新的csv文件。

它有三列:
col1 = [1,2,3,4,5,6,7,8,9,10] 
col2 = [A, A, A, B, C, C, C, C, A, A] 
col3 = []

在第三列的每个单元格中,我想填入一个ID号码,这个号码只有在第二列的内容发生变化时才会改变。

在我的例子中,我会得到 col3 = [1,1,1,2,3,3,3,3,4,4]

有没有人能教我该怎么做?

1 个回答

2

在Python 3中:

from itertools import groupby
from operator import itemgetter
import csv

with open('f1.csv', newline='') as f_in, open('f2.csv', 'w', newline='') as f_out:
    reader = csv.reader(f_in)
    writer = csv.writer(f_out)
    for i, (key, group) in enumerate(groupby(reader, key=itemgetter(1)), start=1):
        for row in group:
            writer.writerow(row + [i])

如果你使用的是Python 2.7,记得把with语句改成:

with open('f1.csv', 'rb') as f_in, open('f2.csv', 'wb') as f_out:

撰写回答