我有多个字典列表,这些列表收敛到一个excel文件的字典列表。这个想法是为每个字典,键(web1,web2),名称制作一个excel表格,并在每个表格中具有正确的信息。 下面的代码的问题是,它使一张Excel文件。 我该怎么办?
import pandas as pd
web1 = [{
'country': 'NL',
'id': '56655',
'title': 'some 1',
'date': 'today',
'description': 'something else here',
'web': 'http://'
},
{
'country': 'IE',
'jobid': '45862',
'title': 'some 2',
'date': 'today',
'description': 'something else here',
'web': 'http://'
}]
web2 = [{
'country': 'IT',
'id': '77878',
'title': 'some 3',
'date': 'today',
'description': 'something else here',
'web': 'http://'
},
{
'country': 'NE',
'id': '45862',
'title': 'some 4',
'date': 'today',
'description': 'something else here',
'web': 'http://'
}]
data =[{
'website1': web1
},
{
'website1': web2
}]
for x in data:
z = str(*x).capitalize()
for y in x.values():
cx = pd.DataFrame(y, columns = ['country', 'title', 'date', 'id', 'web','description'])
writer = pd.ExcelWriter('test.xlsx')
cx.to_excel(writer, sheet_name=f'{z}')
workbook = writer.book
worksheet = writer.sheets[f'{z}']
align_r = workbook.add_format({'align': 'right'})
bold = workbook.add_format({'bold': True})
color_format = workbook.add_format({'bg_color': 'green'})
condi_color = worksheet.conditional_format('G:G', {
'type': 'text',
'criteria': 'containing',
'value': 'red',
'format': color_format})
# set column spacing, format
worksheet.set_column('A:A', 3)
worksheet.set_column('B:B', 2, bold)
worksheet.set_column('C:C', 40, bold)
worksheet.set_column('D:D', 10, align_r)
worksheet.set_column('G:G')
writer.save()
答案 0 :(得分:0)
pandas
有一个ExcelWriter
助手,就在文档中。
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_excel.html
>>> writer = pd.ExcelWriter('output.xlsx')
>>> df1.to_excel(writer,'Sheet1')
>>> df2.to_excel(writer,'Sheet2')
>>> writer.save()
因此,每个字典都将变成pd.DataFrame(webN)
的df,然后使用编写器调用df,如上面的第2行和第3行所示。
编辑:
要遍历字典列表,您可以编写:
writer = pd.ExcelWriter('output.xlsx')
for i in range(len(list_of_dicts)):
df = pd.DataFrame(list_of_dicts[i]) # Construct the dataframe
df.to_excel(writer, "Sheet{}".format(i + 1))
根据数据,您可能希望使用from_dict
构造数据框