熊猫在多个Excel工作表中的字典列表

时间:2018-10-26 14:51:48

标签: python excel pandas

我有多个字典列表,这些列表收敛到一个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()

1 个答案:

答案 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

构造数据框