【问题标题】:Save nested dictionary with array of numbers into CSV file将带有数字数组的嵌套字典保存到 CSV 文件中
【发布时间】:2021-01-31 22:06:51
【问题描述】:

我有一本字典 (cell_summary),里面有 46 个项目(b1c0,b1c1,b1c2..)。 “cell_summary”中的每个项目都是一个包含 8 个项目的字典。 8 个项目中的每一个都是一个数字数组。我想将 46 个项目转换为单个 CSV 或 excel 工作簿中的 46 个工作表。 8 个键名必须是每张表中的列名,并且对应的数据应该在同一列中。请参阅随附的图像以清楚地了解数据。 CSV 文件中的每张表都应包含所有 8 个字段名称,并且数组中的值必须出现在相应字段的列中。

我尝试了以下代码。但是,数组中的所有值都只存储在 CSV 文件的一个单元格中。请参阅附图以供参考。

请帮帮我。

import csv
import itertools

with open("Cell Summary.csv", 'w', newline='' )as f:

    fields = ['IR', 'QC', 'QD', 'Tavg', 'Tmin', 'Tmax', 'chargetime', 'cycle']
    w = csv.DictWriter( f, fields )
    for key,val in sorted(cell_summary.items()):
        row = {'IR': key}
        row.update(val)
        w.writerow(row)

【问题讨论】:

标签: python arrays dictionary export-to-csv


【解决方案1】:

与编写字典不同,编写 Dataframe 更容易,如下面的实现所示。您需要安装openpyxl,请参阅documentation 了解如何安装。

import numpy as np
import pandas as pd
writer = pd.ExcelWriter('test.xlsx', engine='openpyxl')
diction={'b1c0':{'IR':np.arange(1,100,1),'QC':np.arange(1,100,1),'QD':np.arange(1,100,1)},
        'b1c1':{'IR':np.arange(1,100,1),'QC':np.arange(1,100,1),'QD':np.arange(1,100,1)},
        'b1c2':{'IR':np.arange(1,100,1),'QC':np.arange(1,100,1),'QD':np.arange(1,100,1)}}

for df_name, df in diction.items():
    pd.DataFrame.from_dict(df).to_excel(writer, sheet_name=df_name)
writer.save()

【讨论】:

  • 你好@Sameeresque。太感谢了。真的帮了我很多。 :)
  • 如果字典(字典)中每个数组的长度不同,我该如何做同样的工作?在您提到的上述示例代码中,如果“IR”、“QC”、“QD”是大小为 100、150、120 的数组。那么我该怎么做呢?我试过了,但它说“数组必须都一样长”。请用这个@Sameeresque 指导我
  • 我建议填充以使所有数组的长度相等。看到这个documentation
猜你喜欢
  • 2021-05-08
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 2016-11-22
  • 2019-01-12
  • 2021-09-28
  • 2021-05-08
  • 2016-08-19
相关资源
最近更新 更多