![](/img/trans.png)
[英]Manipulating row data in CSV file and appending it in a new column using Python
[英]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.