首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将pandas Dataframe转换为PDF时增加特定列的宽度

将pandas Dataframe转换为PDF时增加特定列的宽度
EN

Stack Overflow用户
提问于 2019-10-11 14:56:29
回答 2查看 4K关注 0票数 5

我有熊猫数据帧,我正在尝试通过首先将其转换为html来将其转换为pdf。在将其转换为html时,我们使用col_space属性来帮助设置html表中所有列的列宽。

代码语言:javascript
运行
复制
some_dataframe.to_html(os.path.abspath(html_output_file_path), index=False, border=1, col_space=100)

但我的要求是,我只需要增加特定列的宽度,而不是增加最终pdf中出现的所有列的宽度。有没有办法只增加一列的宽度?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-16 20:10:23

您可以利用HTML,它提供了对生成的.style外观的高粒度控制。不过,还需要一些CSS知识:

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np
import pdfkit

df = pd.DataFrame({'A': np.linspace(1, 10, 10)})
df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4), columns=list('BCDE'))], axis=1)
styles = [dict(selector='.col3', props=[('min-width', '300px')]), dict(selector='.data', props=[('min-width', '6em')])]
html = df.style.hide_index().set_table_styles(styles).set_table_attributes('border=3 cellspacing=0').render()

with open(os.path.abspath(html_output_file_path), 'w') as f:
    f.write(html)

pdfkit.from_string(html, os.path.abspath(pdf_output_file_path))

这将生成以下外观:

票数 5
EN

Stack Overflow用户

发布于 2019-10-16 20:47:34

这就是你可以做的

代码语言:javascript
运行
复制
df = pd.DataFrame({'test': ['foo foo foo foo foo foo foo foo', 'bar bar bar bar bar'],
             'number': [1, 2]})
df.style.set_properties(subset=['test'], **{'width': '300px'})
new_df=df.style.set_properties(subset=['testt'], **{'width': '300px'})

渲染此文件并保存到文件

代码语言:javascript
运行
复制
html_df = new_df.hide_index().render()
with open("new_df.html","w") as fp:
    fp.write(html_df)

从现在开始,Pdfkit或任何类似的库都应该能起作用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58335791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档