簡體   English   中英

在python中添加帶有新列的CSV文件

[英]Appending a CSV file with a new column in python

我正在嘗試通過合並一些舊文件中的變量並將它們附加到新的csv文件中來創建干凈的csv文件。

我第一次運行數據沒有問題。 我得到了想要的輸出,但是每當我嘗試向數據附加新變量(即新列)時,它將變量附加到底部,輸出就很奇怪。

除了將groupvariables變量更改為所需的變量,然后使用f2 = open('outputfile.csv',“ ab”)<---,但使用ab進行修改外,我基本上為每個變量運行了相同的代碼。 任何幫助,將不勝感激

groupvariables=['x','y']

f2  = open('outputfile.csv', "wb")
writer = csv.writer(f2, delimiter=",")
writer.writerow(("ID","Diagnosis"))

for line in csv_f:
    line = line.rstrip('\n')
    columns  = line.split(",")
    tempname = columns[0]
    tempindvar = columns[1:]

templist = []

for j in groupvariables:
    tempvar=tempindvar[headers.index(j)]
    if tempvar != ".":
        templist.append(tempvar)

newList = list(set(templist))

if len(newList) > 1:
    output = 'nomatch'
elif len(newList) == 0:
    output = "."
else:
    output = newList[0]

tempoutrow = (tempname,output)
writer.writerow(tempoutrow)

f2.close()

CSV是基於行的文件格式,因此,將列添加到現有CSV文件的唯一方法是將其讀入內存並完全覆蓋,然后將新列添加到每一行。

但是,如果您只想添加 ,則追加會很好。

這可能會有所幫助。 我假設每個csv文件中每一行的第一個字段都是記錄的主鍵,可用於匹配兩個文件之間的行。 下面的代碼從一個文件中讀取記錄,將它們存儲在字典中,然后從另一個文件中讀取記錄,將值附加到字典中,並寫出一個新文件。 您可以調整此示例以更好地解決您的實際問題。

import csv
# using python3

db = {}
reader = csv.reader(open('t1.csv', 'r'))
for row in reader:
    key, *values = row
    db[key] = ','.join(values)

reader = csv.reader(open('t2.csv', 'r'))
for row in reader:
    key, *values = row
    if key in db:
        db[key] = db[key] + ',' + ','.join(values)
    else:
        db[key] = ','.join(values)

writer = open('combo.csv', 'w')
for key in sorted(db.keys()):
    writer.write(key + ',' + db[key] + '\n')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM