【发布时间】:2021-09-04 23:52:29
【问题描述】:
我想使用 pandas 数据框向我的 excel 添加一个“第二个”标题。 excel有他的价值观和标题。但我想在标题上方添加一个新行,只有一列(所有列标题的大小)。并且文本居中。 像这样的:
我该怎么做?
【问题讨论】:
标签: python excel pandas dataframe xlsxwriter
我想使用 pandas 数据框向我的 excel 添加一个“第二个”标题。 excel有他的价值观和标题。但我想在标题上方添加一个新行,只有一列(所有列标题的大小)。并且文本居中。 像这样的:
我该怎么做?
【问题讨论】:
标签: python excel pandas dataframe xlsxwriter
使用MultiIndex.from_product,但文字不居中:
df.columns = pd.MultiIndex.from_product([['Result'], df.columns])
编辑:
import string
# Creating a DataFrame
df = pd.DataFrame(np.random.randn(8, 6), columns=list('ABCDEF'))
# Create a Pandas Excel writer using XlsxWriter engine.
writer = pd.ExcelWriter("test.xlsx", engine='xlsxwriter')
# Create custom style
df.to_excel(writer, sheet_name='Sheet1', startrow=1, index=False)
# Get workbook and worksheet objects
workbook = writer.book
worksheet = writer.sheets['Sheet1']
merge_format = workbook.add_format({'align': 'center'})
len_cols = len(df.columns)
#set merge_range by length of colums names
len_cols = len(df.columns)
worksheet.merge_range(0, 0, 0, len_cols - 1, 'Result', merge_format)
writer.save()
【讨论】:
F1 按列的长度。因此使用字典d 进行映射。所以6:'F'在dict中通过寻找6生成F。
merge_range() 支持(row, col) 表示法,所以在这里使用它会更容易,如worksheet.merge_range(0, 0, 0, len_cols - 1)。请参阅:xlsxwriter.readthedocs.io/worksheet.html#worksheet-merge-range