【问题标题】:Is there any way to keep borders of the data cells from Pandas Style when saving dataframe to Excel?将数据框保存到 Excel 时,有什么方法可以保留 Pandas 样式的数据单元格的边框?
【发布时间】:2022-10-01 16:39:07
【问题描述】:

使用.style.set_table_styles 我可以为我的df 添加边框,但是当我将df 写入excel 文件时,我发现它只保留标题和索引部分的边框。数据单元格的边界正在消失。这是示例代码;

df1 = pd.DataFrame({\'a\': [1,2,3], \'b\': [4,5,6]})

df1.style.set_table_styles([
    {\"selector\": \"\", \"props\": [(\"border\", \"1px solid black\")]},
    {\'selector\': \'tbody td\',\'props\': [(\'border\', \'1px solid black\')]},
    {\"selector\": \"th\", \"props\": [(\"border\", \"1px solid black\")]}
                           ]
                           , axis=1, overwrite=False)
df1.to_excel(\'df.xlsx\')

我是否遗漏了什么,或者pandas.style 无法管理?

  • 如文档中所述,pandas styler 不会导出通过 set_table_styles 添加的样式。您必须使用Styler.applymap 或Styler.applymap_index 方法将样式直接应用于单元格。
  • @Attack68 如何逐元素应用地图边框?

标签: python pandas


【解决方案1】:

这对我有用,但它不使用样式,你绝对想要吗? :

import pandas as pd
import xlsxwriter

df1 = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6]})
writer = pd.ExcelWriter('df.xlsx', engine='xlsxwriter')
df1.to_excel(writer, sheet_name='Sheet1')
workbook = writer.book
worksheet = writer.sheets['Sheet1']

border_fmt = workbook.add_format({'bottom':5, 'top':5, 'left':5, 'right':5})
worksheet.conditional_format(xlsxwriter.utility.xl_range(0, 0, len(df1), len(df1.columns)), {'type': 'no_errors', 'format': border_fmt})
writer.save()
writer.close()

【讨论】:

    【解决方案2】:

    我想我用Styler.set_properties 找到了答案

    df1 = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6]})
    
    df1 = df1.style.set_properties(**{'border-color': 'black', 'border-width': '1px', 'border-style': 'solid'})
    df1.to_excel('df.xlsx')
    

    【讨论】:

      猜你喜欢
      • 2014-09-28
      • 2019-02-09
      • 2019-07-19
      • 1970-01-01
      • 2017-01-20
      • 2021-05-16
      • 2022-10-05
      • 2018-07-24
      相关资源
      最近更新 更多