【问题标题】:Copying a specific column from a csv file to another csv in a specific place将特定列从 csv 文件复制到特定位置的另一个 csv
【发布时间】:2016-06-07 22:52:44
【问题描述】:

我在 Python 2.7 中尝试了不同的方法,我在这个论坛上看到了将特定列从 csv 文件复制到特定位置(列)的另一个 csv 文件。

csv1:
Header1 Header2 Header3 Header4
1       2       3       4
1       2       3       4
1       2       3       4
1       2       3       4

csv2:
Header5 Header6 Header7
5       6       7
5       6       7
5       6       7

所以我想将 Header2 列复制到 Header6 列上,结果如下

csv2:
Header5 Header2 Header7
5       2       7
5       2       7
5       2       7
        2

每个标题都在不同的单元格中。我尝试了以下方法(甚至制作了第三个文件)但没有成功:

with open('book1.csv', 'r') as book1:
    with open('book2.csv', 'r') as book2:
        reader1 = csv.reader(book1, delimiter=',')
        reader2 = csv.reader(book2, delimiter=',')

        both = []
        fields = reader1.next() # read header row
        reader2.next() # read and ignore header row
        for row1, row2 in zip(reader1, reader2):
            row2.append(row1[-1])
            both.append(row2)

        with open('output.csv', 'w') as output:
            writer = csv.writer(output, delimiter=',')
            writer.writerow(fields) # write a header row
            writer.writerows(both)

有什么想法吗? :)

【问题讨论】:

    标签: python csv copy


    【解决方案1】:

    您要附加的列表会水平附加。该行无法知道要附加到它的下一个项目是否属于相邻列或多个列。

    解决此问题的方法是确定具有最多值的标题列的长度(所有列中的最大列长度。)

    在您想要的“csv2”输出中,与其他标题(3 个值)相比,Header2 在其列中的值数量最多(4 个值)。

    您要做的是确保所有其他标头的长度等于最大长度(4 个值)。

    您可以不断地向每一列添加一个不相关的项目,以便它完美地为下一列留出空间。您可以垂直附加到底部短列的示例项目可以是空字符串值 ("")、不适用的字符串值 ("NA") 或您不希望出现的数字 0作为任何数据集列中的整数。

    【讨论】:

      【解决方案2】:

      尝试类似:

              for row1, row2 in zip(reader1, reader2):
                  newRow = str(row1[0])+","+str(row1[1])+","+str(row1[2])
                  both.append(row2)
      

      另外,我建议您不要复制其他代码并将其粘贴为您的解决方案。我建议您尝试至少执行部分代码并寻求帮助。如果您不添加任何代码也可以,但是如果您不尝试您提供的代码,它可能会使人们感到困惑并且他们无法帮助您。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-04
        相关资源
        最近更新 更多