【发布时间】:2021-12-21 18:53:26
【问题描述】:
我有几个 pandas 数据框,我正在使用 ExcelWriter 创建一个 Excel 工作表。我的所有数据框都转到一个 Excel 表(“Sheet1”),最后,我正在写一个长句子。(“CompanyName:ABC \n Country:USA”)。 我通常使用下面的命令。
import pandas as pd
# Create some Pandas dataframes from some data.
df1 = pd.DataFrame({'Data 1': [11, 12]})
df2 = pd.DataFrame({'Data 2': [21, 22, 23]})
#df3 = pd.DataFrame({'Data 3': [31, 32, 33, 34]})
d = {'id1': ['85643', '85644','85643','8564312','8564314','85645','8564316','85646','8564318','85647','85648','85649','85655','56731','34566','78931','78931'],'ID': ['G-00001', 'G-00001','G-00002','G-00002','G-00002','G-00001','G-00001','G-00001','G-00001','G-00001','G-00002','G-00002','G-00002','G-00002','G-00003','G-00003','G-00003'],'col1': [671, 2,5,3,4,5,60,0,0,6,3,2,4,32,3,1,23],'Goal': [np.nan, 56,78,np.nan,89,73,np.nan ,np.nan ,np.nan, np.nan, np.nan, 34,np.nan, 7, 84,np.nan,5 ], 'col2': [793, 4,8,32,43,55,610,0,0,16,23,72,48,3,28,5,3],'col3': [500, 22,89,33,44,55,60,1,5,6,3,2,4,13,12,14,98],'Date': ['2021-06-13', '2021-06-13','2021-06-14','2021-06-13','2021-06-14','2021-06-15','2021-06-15','2021-06-13','2021-06-16','2021-06-13','2021-06-13','2021-06-13','2021-06-16','2021-05-23','2021-05-13','2021-03-26','2021-05-13']}
df3 = pd.DataFrame(data=d)
# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('pandas_example.xlsx', engine='xlsxwriter')
start_row = 0
# Output the data frames and keep track of the start/end row.
for df in (df1, df2, df3):
df.to_excel(writer, sheet_name='Sheet1', startrow=start_row, index=False)
start_row += df.shape[0] + 1
# Get the xlsxwriter workbook and worksheet objects.
workbook = writer.book
worksheet = writer.sheets['Sheet1']
worksheet.set_zoom(60)
worksheet.set_default_row(41)
# Add a format
header2 = workbook.add_format({
'bold': True,
'align': 'center',
'border': 6,
'valign': 'vcenter',
'fg_color': '#D7E4BC',
'font_name': 'Calibri',
'font_size': 12,
'text_wrap': True
})
# Write a merge range.
start_col = 0
end_col = 3
worksheet.merge_range(start_row, start_col, start_row + 1, end_col,
"CompanyName: ABC\nCountry: USA", header2)
# Close the Pandas Excel writer and output the Excel file.
writer.save()
在这里,我为每一行设置了相同的行高。使用
worksheet.set_default_row(41)
但我想为 50 行高设置数据帧标题和 35 行高度的值。另外,我想在数据框之间添加一个空白行。
是否可以在 pandas.ExcelWriter 或 python 中的任何其他方式中执行此操作? 任何建议将不胜感激。提前致谢!!
【问题讨论】:
-
你可以在这里找到答案:stackoverflow
-
@amirali 这是用于逐行格式化写入?我的意思是它的格式有点像奇数行和偶数行。但我想格式化具有不同行高的数据框标题和值。我的数据帧长度也每次都在变化。有没有办法做到这一点?
-
您可以将 if 子句更改为:
for row, row_data in enumerate(data): if row== 1: worksheet9.write_row(row + 2, 1, row_data, format1) else: worksheet9.write_row(row + 2, 1, row_data, format2)其中格式 1 将是标题格式,格式 2 将是其余格式。 -
没用。
标签: python pandas dataframe pandas.excelwriter