按照

2014-09-10 33 views
-1

在csv文件中填充一行這裏是我想用python更新的一個csv文件。 它有3列:按照

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

對於COL3每個細胞,我想填補一個ID號,將改變的COL2變化的內容,只有當。

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

任何人給我的方法是什麼?

+3

「只有當COL2的內容改變」你是什​​麼意思? 'col1'的作用是什麼? – 2014-09-10 14:20:35

+0

你可以在你的問題中更精確嗎?你問「我如何填寫col3'數組?」或者你問「如何將數組寫入CSV文件?」 – 2014-09-10 14:23:35

+0

哦,是的標題是不完整的......它應該是「根據另一行的內容在一個csv文件中填充一行」 – Kerplouz 2014-09-10 14:26:41

回答

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 open('f1.csv', 'rb') as f_in, open('f2.csv', 'wb') as f_out: 
+0

嗨史蒂文,thx快回答:使用相同的示例csv文件我得到一個「文件」C:\路徑\ script.py「,第8行,在 爲我,(鍵,組)在枚舉(groupby(reader,key = itemgetter 1)),start = 1): IndexError:列表索引超出範圍「 – Kerplouz 2014-09-10 14:43:07

+0

@Kerplouz:這意味着您的輸入文件中有空行。有時文件末尾的額外換行符是空行的來源。也有可能你有一個單一的項目。如果您的分隔符不是逗號,您也可以獲得單個項目行。對於其他分隔符,請執行'reader = csv.reader(f_in,delimiter ='\ t')#或其他分隔符。 – 2014-09-10 14:47:27

+0

夥計,非常感謝,它完美的作品!除了我忘了複製標題... :)但我應該能夠管理它們。我知道這是一個愚蠢的/初學者的問題,但我剛開始學習編程,同時我需要它的工作... – Kerplouz 2014-09-10 14:57:53