使用pandas.DataFrame.to_html时,如何设置列宽?

14

我已经阅读了 这个文档,但我仍然不太清楚如何在使用 pandas.DataFrame.to_html 时设置列宽。

import datetime
import pandas

data = {'Los Angles': {datetime.date(2018, 9, 24): 20.5, datetime.date(2018, 9, 25): 1517.1},
        'London': {datetime.date(2018, 9, 24): 0, datetime.date(2018, 9, 25): 1767.4},
        'Kansas City': {datetime.date(2018, 9, 24): 10, datetime.date(2018, 9, 25): 1.4}}

df = pandas.DataFrame(data=data)

html = df.to_html()

以上代码的结果是: df.to_html result

我该如何强制设置列宽,使它们相同?

4个回答

26

来试试这个:

import datetime
import pandas

data = {'Los Angles': {datetime.date(2018, 9, 24): 20.5, datetime.date(2018, 9, 25): 1517.1},
        'London': {datetime.date(2018, 9, 24): 0, datetime.date(2018, 9, 25): 1767.4},
        'Kansas City': {datetime.date(2018, 9, 24): 10, datetime.date(2018, 9, 25): 1.4}}

df = pandas.DataFrame(data=data)
pandas.set_option('display.max_colwidth', 40)

html = df.to_html()

我已经编辑了答案,请看看是否有效。此外,您可以在这里阅读更多信息:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_html.html 和 https://pandas.pydata.org/pandas-docs/stable/generated/pandas.set_option.html - Irfanuddin
2
“max_colwidth”属性无法设置最小列宽,这常常是换行列的问题。有没有什么方法可以解决这个问题?谢谢。我已经阅读了您提供的链接,但它根本没有解决这个问题。 - fazistinho_

4

我认为使用set_table_attributes函数更好。然后,您可以将CSS类设置为表。如果您的输出中有许多表格,则更易读。

import datetime
import pandas

data = {'Los Angles': {datetime.date(2018, 9, 24): 20.5, datetime.date(2018, 9, 25): 1517.1},
        'London': {datetime.date(2018, 9, 24): 0, datetime.date(2018, 9, 25): 1767.4},
        'Kansas City': {datetime.date(2018, 9, 24): 10, datetime.date(2018, 9, 25): 1.4}}

df = pandas.DataFrame(data=data)

html = df.set_table_attributes('class="table-style"').to_html()

您的CSS可能看起来像这样:

    .table-style {
                  width: 100%;
}

    .table-style td {
                  width: 100px;
}

1
嗨@bender,我应该把.table-style放在代码的哪里呢? - mpx
1
嗨,你的CSS要么放在一个CSS文件中(例如style.css),并链接到HTML文件的头部,要么直接将CSS放在HTML文件的头部。前者更加清晰。我通常先使用后者,当事情变得复杂/庞大时,切换到在不同文件中具有CSS代码的更清晰版本。这里是如何实现CSS的描述:https://www.w3schools.com/Css/css_howto.asp - bender

2
另一个选择是:
df.style.set_table_styles([dict(selector='th', props='min-width: 60px;'),])

1
现在您可以设置 to_html 的 col_space 参数。col_space 指定所有列的最小宽度。
df.to_html(col_space='75px')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接