python - 如何将 pandas df 保存到 Excel 工作表然后对其进行格式化?

标签 python excel pandas format xlsxwriter

import pandas as pd

from datetime import datetime, date

df = pd.DataFrame({'Date and time': [datetime(2015, 1, 1, 11, 30, 55),
                                 datetime(2015, 1, 2, 1,  20, 33),
                                 datetime(2015, 1, 3, 11, 10    ),
                                 datetime(2015, 1, 4, 16, 45, 35),
                                 datetime(2015, 1, 5, 12, 10, 15)],
                   'Dates only':    [date(2015, 2, 1),
                                 date(2015, 2, 2),
                                 date(2015, 2, 3),
                                 date(2015, 2, 4),
                                 date(2015, 2, 5)],
               })

writer = pd.ExcelWriter("pandas_datetime_format.xlsx",
                    engine='xlsxwriter',
                    datetime_format='mmm d yyyy hh:mm:ss',
                    date_format='mmmm dd yyyy')

df.to_excel(writer, sheet_name='Sheet1')

workbook  = writer.book
worksheet = writer.sheets['Sheet1']

format_bc = workbook.add_format({
    'font_name': 'Arial',
    'font_size' : 14,
    'font_color': 'white',
    'bold': 0,
    'border': 1,
    'align': 'left',
    'valign': 'vcenter',
    'text_wrap': 1,
    'fg_color': '#005581'})
worksheet.set_column('B:C', 20, format_bc)
writer.save()

上面的代码预计会生成一个格式化的 Excel 工作表,其中 B 列和 B 列具有蓝色背景,其他方面在 format_bc 中指定。 相反,我收到了如下图所示的文件。

Not formatting the desired cells

有没有办法将数据框写入带有格式的 Excel 工作表?

最佳答案

不幸的是,如这里所见 https://github.com/jmcnamara/XlsxWriter/issues/336 ,无法使用 XlsxWriter 格式化 datedatetime 值。

您可以做的是添加 df = df.astype(str) 将数据帧格式从 date/datetime 更改为 字符串

df = pd.DataFrame(
    {
        'Date and time': [
            datetime(2015, 1, 1, 11, 30, 55),
            datetime(2015, 1, 2, 1,  20, 33),
            [ ... ]
        ],
        'Dates only': [
            date(2015, 2, 1),
            date(2015, 2, 2),
            [ ... ]
        ]
    }
)

df = df.astype(str)

writer = pd.ExcelWriter("pandas_datetime_format.xlsx",
                        engine='xlsxwriter',
                        [ ... ])

[ ... ]

输出:

enter image description here

请注意,如果您希望使用新格式覆盖 header ,请添加到代码的开头:

import pandas.io.formats.excel
pandas.io.formats.excel.header_style = None

关于python - 如何将 pandas df 保存到 Excel 工作表然后对其进行格式化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48796718/

相关文章:

python - Django 测试用例,可以在类/模块级别加载夹具吗?

python - 使用python将一个 Parquet 文件分成3个 Parquet 文件

excel - 我想给每一行一个ID。我如何用公式来做到这一点?

python - 如何替换整个 csv 文件中的特定单词?

python - 将 Pandas DataFrame 中的列组合到 DataFrame 中的列表列

python - 使用 Python 对 Google Storage 进行身份验证

python - 将Django后端中的大文件从Angular前端重定向到Hadoop时出错

vba - Excel vLookup 返回 0

c# - 在 C# 中使用 excel 中的模板

python - 将 pandas 数据框中的一行分解为多行