Увеличение ширины определенного столбца при преобразовании панелей данных в PDF - PullRequest
3 голосов
/ 11 октября 2019

У меня есть pandas dataframes, которые я пытаюсь преобразовать в pdf, сначала преобразовав его в html. При преобразовании его в html у нас есть свойство col_space, которое помогает установить ширину столбца для всех столбцов таблицы html.

some_dataframe.to_html(os.path.abspath(html_output_file_path), index=False, border=1, col_space=100)

Но мое требование заключается в том, что мне нужно увеличивать ширину только определенного столбца, а невсе столбцы присутствуют в финале pdf. Можно ли увеличить ширину только одного столбца?

Ответы [ 2 ]

4 голосов
/ 16 октября 2019

Вы можете использовать свойство .style , которое обеспечивает высокий уровень контроля над внешним видом полученного HTML-кода. Некоторые знания CSS требуются, однако:

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))

Это создаст следующий вид: enter image description here

1 голос
/ 16 октября 2019

Вот как вы можете это сделать

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'})

Визуализируйте это и сохраните в файл

html_df = new_df.hide_index().render()
with open("new_df.html","w") as fp:
    fp.write(html_df)

Pdfkit или любая другая подобная библиотека теперь должна делать трюки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...