如何将 xlsxwriter .add_table() 方法与数据框一起使用?

问题描述 投票:0回答:3

我的数据是数据框'我该怎么做?

import xlsxwriter

workbook = xlsxwriter.Workbook("test1.xlsx")
worksheet = workbook.add_worksheet("sheli22")
worksheet.add_table('B3:F7', {'data': data,'style': 'Table Style Light 17','header_row': False})

workbook.close()
python dataframe xlsxwriter
3个回答
6
投票

根据涵盖

.add_table()
方法的 xlsxwriter 文档部分,它期望“数据结构应该是列表的列表”(链接到文档)。

要从数据帧创建此列表列表,需要使用

.T
转置数据帧,然后使用
.tolist()
将转置数据帧转换为列表列表。

我有一个使用下面的示例数据框的完全可重现的示例。

import pandas as pd
import xlsxwriter

data = pd.DataFrame({'a':[1,2,3,4,5],
                   'b':[2,3,4,5,6],
                   'c':[3,4,5,6,7],
                   'd':[4,5,6,7,8],
                   'e':[5,6,7,8,9]})

workbook = xlsxwriter.Workbook("test1.xlsx")
worksheet = workbook.add_worksheet("sheli22")
worksheet.add_table('B3:F7', {'data': data.values.T.tolist(),'style': 'Table Style Light 17','header_row': False})

workbook.close()

预期输出:


2
投票

或者,使用 ExcelWriter:

 with pd.ExcelWriter(path, engine='xlsxwriter') as ew:
    data.to_excel(ew, sheet_name=sheet_name, **kwargs)
    worksheet = ew.sheets[sheet_name]
    options = dict(columns=[{'header': c} for c in sheet_df.columns], ...)

    worksheet.add_table(0, 0, data.shape[0], data.shape[1] - 1, options=options)

0
投票
writer = pd.ExcelWriter(excel_file_name, engine='xlsxwriter')
worksheet = writer.sheets[sheet_name]

worksheet.add_table(start_row,start_col,end_row,end_col,{'style':'Table style light 16','header_row': False}) 

start_row
是 Excel 表格的起始行,
start_col
start_row
相同,
end_row
start_row+(len(data frame))
end_col
start_col + len(data frame.columns)

© www.soinside.com 2019 - 2024. All rights reserved.