将带有数字数组的嵌套字典保存到 CSV 文件中
Save nested dictionary with array of numbers into CSV file
我有一本字典 (cell_summary),里面有 46 个项目 (b1c0,b1c1,b1c2..)。 “cell_summary”中的每一项都是一个字典,里面有 8 个项目。 8 项中的每一项都是一个数字数组。我想将 46 个项目转换为单个 CSV 或 excel 工作簿中的 46 个 sheets。 8个键名必须是每个sheet中的列名,对应的数据应该在同一列中。查看附加的图像以获得数据的清晰概念。 CSV 文件中的每个 sheet 应具有所有 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)
与其编写字典,不如编写 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()
我有一本字典 (cell_summary),里面有 46 个项目 (b1c0,b1c1,b1c2..)。 “cell_summary”中的每一项都是一个字典,里面有 8 个项目。 8 项中的每一项都是一个数字数组。我想将 46 个项目转换为单个 CSV 或 excel 工作簿中的 46 个 sheets。 8个键名必须是每个sheet中的列名,对应的数据应该在同一列中。查看附加的图像以获得数据的清晰概念。 CSV 文件中的每个 sheet 应具有所有 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)
与其编写字典,不如编写 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()