当需要将Pandas数据框架写入多个Excel表时,可以使用Python的xlsxwriter库。xlsxwriter库提供了Worksheet类,支持创建和格式化Excel工作表。我们可以即使使用Worksheet类的add_table()方法将Pandas数据框架写入Excel。
以下是详细的步骤:
- 引入必要的Python库和模块,包括Pandas、xlsxwriter:
import pandas as pd
import xlsxwriter
- 读取需要保存到Excel的数据
data = pd.read_csv("data.csv")
- 将数据拆分成多个数据框,根据需要写入不同的Excel表。下面代码把数据框按照不同的值分为Excel工作表。
table_names = data['table_name'].unique()
for table in table_names:
temp_df = data.loc[data['table_name'] == table]
df_to_excel(temp_df, table+".xlsx", table)
- 根据分拆数据框的表名创建Excel工作簿和工作表。下面是写入Excel表的主函数,函数中使用Worksheet.add_table()方法把数据框写入Excel表中。
def df_to_excel(df, filename, sheet_name):
# 创建Excel工作簿和工作表
writer = pd.ExcelWriter(filename, engine='xlsxwriter')
df.to_excel(writer, sheet_name=sheet_name, index=False)
workbook = writer.book
worksheet = writer.sheets[sheet_name]
table_format = workbook.add_format({
'border': 1,
'align': 'center',
'valign': 'vcenter',
'text_wrap': True
})
# 写入数据框
worksheet.add_table(0, 0, df.shape[0], df.shape[1] - 1, {
'data': df.values.tolist(),
'columns': [{'header': c} for c in df.columns],
'style': 'Table Style Light 14',
'autofilter': False,
'header_row': True,
})
# 设置表格格式
for col_num, width in enumerate(get_col_widths(df)):
worksheet.set_column(col_num, col_num, width, table_format)
# 保存Excel文件
writer.save()
在函数中,我们在工作表中创建一个表格,然后使用Pandas.DataFrame.to_excel()方法将数据框写入Excel表中。
注意:
- 必须在代码中设置格式,否则保存的Excel文件中将没有表格的边框或样式。
-
'style': 'Table Style Light 14' 可根据需要设置。这是xlsxwriter库内置的表格样式,可根据要求选择。
-
为表格中的每一列表示最大长度,以便在保存Excel表时适当地调整各列的宽度。
def get_col_widths(df):
col_widths = []
for col in df.columns:
max_len = max([len(str(s)) for s in df[col].values] + [len(col)])
col_widths.append(max_len)
return col_widths
您现在可以将标题和数据分别写入各自的Excel表中了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何将Pandas数据框架写入多个Excel表 - Python技术站