【问题标题】:Convert Multiple Python Lists to CSV Columns将多个 Python 列表转换为 CSV 列
【发布时间】:2019-07-14 18:47:21
【问题描述】:

我的目标是将一系列列表写入 csv,其中每个列表都是一列。

这是我目前的代码:

rows = list(zip(columns['phase'],columns['start_date']))

with open('date_update.csv','w') as f:
    writer = csv.writer(f)
    for row in rows:
        writer.writerows(row);

This is the csv it produces。两个列表的长度相同。当我打印行时,它在开头有一个额外的'),'。但是当您打印两个列表(columns['phase']columns['start_date'])时,这不存在。

高空滑索有什么问题吗?还是我没有正确地将其写入 csv 文件?

【问题讨论】:

  • 请不要发布图片。帮助指南更喜欢文本,因为它是可搜索的和可剪切的。

标签: python csv


【解决方案1】:

您可以使用pd.DataFrame,然后将其保存到 csv。例如:

import pandas as pd
columns = {}

columns['phase'] = ['Phase 1','Phase 2', 'Phase 3','Phase 4']
columns['start_date'] = ['August 24 September','August 24 September',
                         'August 24 September', 'August 24 September']

data = list(zip(columns['phase'],columns['start_date']))

df = pd.DataFrame(data = data)

df.to_csv('date_update.csv', index=False, header=False)

将在文件“date_update.csv”中保存以下数据:

第一阶段,8 月 24 日
第二阶段,8 月 24 日
第三阶段,8 月 24 日
第四阶段,8 月 24 日

【讨论】:

    【解决方案2】:

    任意使用:

    for row in rows:
        writer.writerow(row)
    

    或者:

    writer.writerows(rows)
    

    注意单数和复数形式的使用。 writerows 需要一系列序列。字符串是一个序列,因此传递字符串列表使其将字符串用作列序列并将每个字符列在单独的列中。

    同样根据csv docs,使用以下任一方法打开传递给csv.writer的文件:

    with open('date_update.csv','wb') as f:           # Python 2
    with open('date_update.csv','w',newline='') as f: # Python 3
    

    完整示例:

    #!python3
    import csv
    
    columns = {}
    columns['phase']      = ['Phase 1','Phase 2', 'Phase 3','Phase 4']
    columns['start_date'] = ['Aug 24, 2018','Sep 25, 2018','Jan 01, 2019','Feb 15, 2019']
    
    rows = zip(columns['phase'],columns['start_date'])
    
    with open('date_update.csv','w',newline='') as f:
        writer = csv.writer(f)
        writer.writerows(rows)
    

    输出:

    Phase 1,"Aug 24, 2018"
    Phase 2,"Sep 25, 2018"
    Phase 3,"Jan 01, 2019"
    Phase 4,"Feb 15, 2019"
    

    【讨论】:

      【解决方案3】:

      作为@mark-tolonen 所写内容的附录,您还可以使用内置 csv 模块中的 DictWriter。

      with open('date_update.csv','a') as f:
          writr = csv.DictWriter(f, fieldnames=["phase","start_date"])
          # writr.write_header() # Use only if file is created by operation or is empty
          writr.writerows([{"phase": c["phase"], "start_date": c["start_date"]} for c in columns])
      

      【讨论】:

        猜你喜欢
        • 2020-04-19
        • 2019-10-17
        • 2016-01-15
        • 2018-10-25
        • 1970-01-01
        • 1970-01-01
        • 2015-04-01
        • 1970-01-01
        • 2020-01-03
        相关资源
        最近更新 更多