如何使用基于类别的分组将数据框导出到 excel sheet

How to exporting dataframe to excel sheet with grouping based in categories

我有一个大约有 60K 行的数据框,其结构类似于下面的结构:

Col1 Col2 Col3
a 1 2
a 5 6
a 3 0
b 3 12
b 4 21
c 7 31

在 Col1 列中,我有不同大小的类别,每次更新数据库时,行数也会发生变化。

可以使用已格式化的行以 xlsx 格式导出数据框(类似于 https://xlsxwriter.readthedocs.io/working_with_outlines.html 发生的情况),但会自动检测类别?

一切皆有可能。这是实现您想要的目标的一种方法。

import pandas as pd

# Create a test dataframe
df = pd.DataFrame({'Col1': ['a', 'a', 'a', 'b', 'b', 'c'],
                   'Col2': [1, 5, 3, 3, 4, 7],
                   'Col3': [2, 6, 0, 12, 21, 31]})

writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']

# Define a format for the first category in the group
bold = workbook.add_format({'bold': True})

# Iterate through the dataframe. If row is the first record of the group apply format and the collapsed '+' symbol,
# for the rest records of the group assign them in the same level and hide them
for row in range(0, df.shape[0]):
    if df.iloc[row, 0] != df.iloc[row-1, 0]:
        cell_format = bold
        outline_option = {'collapsed': True}
    else:
        cell_format = None
        outline_option = {'level': 1, 'hidden': True}

    worksheet.set_row(row+1, None, cell_format, outline_option)

writer.save()

文件是这样保存的:

如果展开行,您将得到:

如果输出不是您想要的,您可以调整代码以满足您的需要。但我希望你明白了。