You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用dataframe_image导出DataFrame为PNG报错,求解决方法

修复DataFrame导出PNG时的SyntaxError: not a PNG file错误

我之前也碰到过一模一样的问题,这个错误看起来是说文件不是PNG,但实际上大概率是导出过程中的路径、样式渲染或者依赖问题导致的,咱们一步步来排查修复:

1. 优先检查路径转义问题

你代码里的路径用了单个反斜杠\,在Python字符串里这是转义字符,很可能导致生成的文件路径不正确,最终生成的文件内容损坏,被识别为非PNG文件。

把路径改成双反斜杠或者原始字符串:

# 方案1:双反斜杠
dfi.export(fig, f'{dirG}\\moneda {comitente}.png')
# 方案2:原始字符串(在字符串前加r)
dfi.export(fig, rf'{dirG}\moneda {comitente}.png')

2. 简化样式对象,排查渲染异常

有时候复杂的样式设置可能会导致dataframe_image的渲染引擎出错。先把样式简化到最小,测试是否能正常导出:

def imprimir_fig():
    fig = pd.DataFrame(out)
    fig.columns=['Tipo','Valorizada']
    # 先只保留最基础的样式
    fig_styler = fig.style.hide_index()
    dfi.export(fig_styler, rf'{dirG}\moneda {comitente}.png')
    return fig_styler
imprimir_fig()

如果这个简化版能成功,再逐步加回set_properties、set_table_styles这些样式,找到可能出问题的设置项。

3. 重新安装/更新dataframe_image依赖

这个库依赖webkit渲染工具,可能是依赖损坏或者版本兼容问题导致的。尝试重新安装并升级:

pip uninstall dataframe_image -y
pip install dataframe_image --upgrade

替代方案:用imgkit转换HTML为PNG

如果上面的方法都不行,可以换个思路:先把Styler对象转成HTML,再用imgkit转换成PNG:

import imgkit
import pandas as pd

def imprimir_fig():
    fig = pd.DataFrame(out)
    pd.set_option('display.colheader_justify', 'center')
    fig.columns=['Tipo','Valorizada']
    fig_styler = fig.style.hide_index()
    fig_styler = fig_styler.set_properties(**{'text-align': 'center'})
    fig_styler = fig_styler.set_table_styles([dict(selector = 'th', props=[('text-align', 'center')])])
    
    # 把样式对象转为HTML字符串
    html_content = fig_styler.to_html()
    # 配置wkhtmltopdf路径(如果没加到系统环境变量的话)
    config = imgkit.config(wkhtmltoimage=r'C:\Program Files\wkhtmltopdf\bin\wkhtmltoimage.exe')
    # 导出为PNG
    imgkit.from_string(html_content, rf'{dirG}\moneda {comitente}.png', config=config)
    return fig_styler

imprimir_fig()

注意:使用这个方案需要先安装依赖:

pip install imgkit

另外还要下载wkhtmltopdf安装包,安装后把它的bin目录加到系统环境变量,或者在代码里指定路径。


内容的提问来源于stack exchange,提问作者Agustín Ehrman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 17:15:50