在 Excel 工作表中操作数据框输出
Posted
技术标签:
【中文标题】在 Excel 工作表中操作数据框输出【英文标题】:Manipulate dataframe output in Excel sheets 【发布时间】:2021-08-01 08:34:55 【问题描述】:早上,
我有一个数据框,我根据特定列中的交易簿将其拆分为多个工作表。一旦导出到单个工作表,我想自动调整数据、隐藏网格线和居中对齐数据并冻结特定单元格上的窗格 ($B$2)。导出已完成,但 Excel 中的格式不起作用,我卡在自动调整上:
dfTemp = 'Trading_Book': ['A', 'A', 'A',
'B', 'B', 'B',
'C', 'C', 'C',
],
'Client': ['AA', 'AA', 'AA',
'BB', 'BB', 'BB',
'CC', 'CC', 'CC',
],
dfTemp = pd.DataFrame.from_dict(dfTemp)
print(dfTemp)
# Export each Trading Books data to a separate sheet in Excel
excel_writer = pd.ExcelWriter('C:\EOM_ML_201901\outputs\Excel_Data.xlsx')
dfTemp.to_excel(excel_writer, sheet_name='Consolidated')
# Get Book List
Books = dfTemp['Trading_Book'].unique().tolist()
# For each book send to Excel sheet
for myname in Books:
mydf = dfTemp.loc[dfTemp.Trading_Book == myname]
mydf.to_excel(excel_writer, sheet_name=myname)
# Autofil columns
for column in mydf:
column_length = max(mydf[column].astype(str).map(len).max(), len(column))
col_idx = mydf.columns.get_loc(column)
excel_writer.sheets[myname].set_column(col_idx, col_idx, column_length)
excel_writer.save()
任何帮助将不胜感激。
【问题讨论】:
感谢@Blimitless。回到办公室会检查。 ?????? 【参考方案1】:当您写入文件时,可以直接从 pandas 中冻结窗格:
mydf.to_excel(excel_writer, sheet_name=myname, freeze_panes=(x,y))
根据documentation here,将 (x,y) 替换为您要冻结的行和列。
不幸的是,相同的文档没有显示直接从 pandas 隐藏网格线的方法。但是,您可以调用 xlsxwriter 作为用于编写的引擎:mydf.to_excel(excel_writer, sheet_name=myname, engine='xlsxwriter')
那么您应该可以按照accepted answer here 隐藏网格线。
对于居中对齐,您可以使用 xlsxwriter 包中的这两个命令,具体取决于您想要水平居中还是垂直居中:
cell_format.set_align('center')
cell_format.set_align('vcenter')
Documentation here 来自 xlsxwriter,使用 ctrl-f 'align' 跳到你想要的部分。
祝你好运!
【讨论】:
以上是关于在 Excel 工作表中操作数据框输出的主要内容,如果未能解决你的问题,请参考以下文章
Python Pandas 数据框在 Excel 工作表中读取精确的指定范围
Python:如何快速创建仅包含大型 Excel 工作表中特定列的 pandas 数据框?