将新列插入csv?

时间:2017-06-28 19:18:14

标签: python python-3.x csv

我意识到这可能被标记为重复,但我仍然会欣赏清晰简洁的回复。我花了很多时间尝试使用其他类似问题中已经给出的一些响应中的一些代码,但没有用。

我有一个csv文件,其长度可能会不时变化。我用python编写的程序将打开csv文件,读取它并对某些数据字段进行更改。我写的程序运作得非常好,我即将结束这个项目。我面临的唯一问题是我需要添加两个新列。其中一个标题为“机构”,并且始终包含相同的数据,数字18和另一个标题为“文件类型”的数据。 “文件类型”标题在每行上的数字总是低于它。

例如:

Document Type|Name|Tax ID|Loan Number|Institution|Full Path|File Type|
 Some Info   |blah|123456|123456abcde|    18     |C:\blah  |   16    |
等等......,

所以基本上对于需要转换的每一行数据,我总是需要程序来获取我的csv文件,并将两个新列InstitutionFile Type插入数据{{1和/ 18分别位于csv中恰好存在的每一行上。合理?因此,如果有150行,我将需要它将其放入150次。如果文档转换45行,则为45。

这是我编写的程序,除了列部分之外,它的工作正常。我不知道如何编写部件来添加列。

16

所以在这里我只显示我编辑的代码以包含新列。

这是我得到的错误。

def newDate():
    file = open("needs_convertedTest.csv","r")

    newFile = []
    for line in file:
        data = line.split(",")
        newDate = data[5][0:2]+data[5][3:5]+data[5][8:10]
        newLine = "%s,%s,%s,%s,%s,%s,%s,%s,%s" % (data[0],data[1],data[2],data[3],data[4],newDate,"18",data[6],"16")
        newFile.append(newLine)

    file = open("needs_convertedTest.csv","w")

    for line in newFile:
        file.write(line)

    file.close()

我正在使用Python 3.6.1。

我真诚地感谢任何回应。

谢谢你, 最大

1 个答案:

答案 0 :(得分:0)

当数据只有七个条目时,您的问题似乎是尝试访问data[8]。我想你可能想要data[6]

顺便说一句,使用pandas会让事情变得非常简单:

import pandas as pd
data = pd.read_csv("needs_convertedTest.csv")
data["Institution"] = 18
data["File Type"] = 16
data.to_csv("output_file_name.csv", index=False)