将csv中的列添加到另一个csv

时间:2013-06-08 23:39:24

标签: python

我有两个名为input.csv的文件(由一列 count 组成)和output.csv(由一列 id 组成)。
我想在 id 列之后的output.csv中粘贴 count 列。

这是我的代码:

with open ("/home/julien/input.csv", "r") as csvinput:
    with open ("/home/julien/excel/output.csv", "a") as csvoutput:
        writer = csv.writer(csvoutput, delimiter = ";")

        for row in csv.reader(csvinput, delimiter = ";"):
            if row[0] != "":
                result = row[0]
            else:
                result = ""  

             row.append(result)
         writer.writerow(row)

但它不起作用。

我一直在寻找问题好几个小时,但我没有解决方案。你有什么技巧可以解决我的问题吗? 谢谢!于连

3 个答案:

答案 0 :(得分:1)

  1. 打开两个文件进行输入。
  2. 打开一个新文件进行输出。
  3. 在循环中,从每个中读取一行,格式化输出行,然后将其写入输出文件
  4. 关闭所有文件
  5. 以编程方式将输出文件复制到输入文件的顶部 “output.csv”。
  6. 完成

答案 1 :(得分:1)

您需要使用三个文件,两个用于阅读,一个用于写入。 这应该有用。

import csv

in_1_name = "/home/julien/input.csv"
in_2_name = "/home/julien/excel/output.csv"
out_name = "/home/julien/excel/merged.csv"

with open(in_1_name) as in_1, open(in_2_name) as in_2, open(out_name, 'w') as out:
    reader1 = csv.reader(in_1, delimiter=";")
    reader2 = csv.reader(in_2, delimiter=";")
    writer = csv.writer(out, delimiter=";")
    for row1, row2 in zip(reader1, reader2):
        if row1[0] and row2[0]:
            writer.writerow([row1[0], row2[0]])

您为每列写下行:

            row.append(result)
            writer.writerow(row)

Dedent最后一行只写一次:

            row.append(result)
        writer.writerow(row)

答案 2 :(得分:0)

如果有人给了两个表,那么通过使用每个表的第一列来合并它们非常容易。使用我的库pyexcel,您可以像合并表一样进行合并:

>>> from pyexcel import Reader,Writer
>>> f1=Reader("input.csv", delimiter=';')
>>> f2=Reader("output.csv", delimiter=';')
>>> columns = [f1.column_at(0), f2.column_at(0)]
>>> f3=Writer("merged.csv", delimiter=';')
>>> f3.write_columns(columns)
>>> f3.close()