用Python向CSV文件添加新列

2024-10-17 08:18:31 发布

您现在位置: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)

关闭()


Tags: columns文件csv数据outputablineopen
2条回答

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')

相关问题 更多 >