【问题标题】:How to add list into a new column in csv - python [duplicate]如何将列表添加到csv中的新列中-python [重复]
【发布时间】:2018-11-07 04:37:00
【问题描述】:

我有一个这样的 csv 文件:

A,Film, Yes 
B,Grass,No
C,Bottle,No  
D,Love,Yes
E,Red,No

而我的系统列表是这样的:

['No','No','Yes','Yes','No'] 

如何将列表添加到新列中,我的期望是这样的:

    A,Film, Yes,No
    B,Grass,No,No
    C,Bottle,No,Yes
    D,Love,Yes,Yes
    E,Red,No,No

我该怎么做?

【问题讨论】:

标签: python python-2.7 csv


【解决方案1】:

对于更复杂的操作,应该考虑 csv 模块。但是只添加一个简单列表的内容作为文件的最后一列,简单的字符串处理就足够了:

lastcol = ['No','No','Yes','Yes','No']
with open(infile) as fdin, open(outfile, "w") as fdout:
    for i, line in enumerate(fdin):
        print(line.rstrip(), lastcol[i], sep=",", file=fdout)

以上只是假设列表至少与文件一样长...

【讨论】:

    【解决方案2】:

    如果你想使用pandas库,你可以这样做:

    import pandas as pd
    
    list = ['No','No','Yes','Yes','No'] 
    df = pd.read_csv('data.csv')
    df['new_column'] = list
    df.to_csv('modified_data.csv')
    

    【讨论】:

    • 我认为作者不需要安装pandas,因为他只是想添加一个新列
    【解决方案3】:

    你可以使用zip:

    import csv
    with open('filename.csv') as f:
      with open('filename.csv', 'w') as f1:
        headers = ['No','No','Yes','Yes','No'] 
        data = list(csv.reader(f))   
        write = csv.writer(f1)
        write.writerows([a+[b] for a, b in zip(data, headers)])
    

    【讨论】:

      【解决方案4】:

      使用 CSV 模块。

      演示:

      import csv
      toAdd = ['No','No','Yes','Yes','No']
      with open(filename, "r") as infile:
          data = [i.strip().split(",") for i in infile.readlines()]
      
      with open(filename, "w") as outfile:
          writer = csv.writer(outfile, delimiter=",")
          for i, value in enumerate(toAdd, 0):
              v = data[i]
              v.extend([toAdd[i]])
              writer.writerow(v)
      

      【讨论】:

        猜你喜欢
        • 2015-12-19
        • 2015-06-03
        • 1970-01-01
        • 2019-06-13
        • 1970-01-01
        • 2011-01-23
        • 2023-04-04
        • 2017-02-20
        • 1970-01-01
        相关资源
        最近更新 更多