【问题标题】:list of dictionaries to csv. Each list in a row到 csv 的字典列表。一行中的每个列表
【发布时间】:2020-10-04 20:48:03
【问题描述】:

我是这里的数据框新手。

我有一个从 python 脚本获得的字典列表:

result = [{'Name':'J','age':'5','address':'California'},
 {'Name':'Q', 'age':'10','address':'newYork'}
]

我希望此输出位于列名为“info”且每个字典位于一行中的 csv 文件中。

知道如何获得这样的 csv:

    info
    {'Name':'J','age':'5','address':'California'}
    {'Name':'Q', 'age':'10','address':'newYork'}

【问题讨论】:

  • 将其表示为 CSV 的“正常”方式是使用 3 列“姓名”、“年龄”和“地址”。您确定要按您的要求做吗?

标签: python dataframe csv export-to-csv


【解决方案1】:

这是来自the docs 的编辑示例,假设所有字典都具有完全相同的键:

import csv

with open('names.csv', 'w', newline='') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=result[0].keys())

    writer.writeheader()
    for r in result:
        writer.writerow(r)

【讨论】:

  • 我收到了这个错误:AttributeError: 'list' object has no attribute 'keys'
  • 对不起,意思是结果[0].keys()
【解决方案2】:

如果您使用的是pandas,则可以运行以下命令:

 import pandas as pd
 pd.DataFrame({"info": result}).to_csv("something.csv", index=False)

【讨论】:

    【解决方案3】:

    在这里,您只是将 JSON 字符串写入文本文件。去做吧:

    import json
    
    with out = open(filename, 'w', newline='\r\n'):    # CSV end of line
        print('info', file=out)
        for js in resul:
            print(json.dumps(js), file=out)
    

    【讨论】:

      猜你喜欢
      • 2019-05-04
      • 1970-01-01
      • 1970-01-01
      • 2014-11-19
      • 1970-01-01
      • 2017-05-13
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多