【问题标题】:Pandas html: Don't truncate long valuesPandas html:不要截断长值
【发布时间】:2016-06-22 03:28:46
【问题描述】:

我知道 pandas 会截断长元素。但是,为什么它会在 html 输出中这样做呢?

import pandas as pd
df = pd.DataFrame(columns=['url'], index=[0])
df['url'] = 'd12dn1928d1n298dn18d9n219d8n18n118219d8n21e12903e21kj9012j9301j2391023j209d12dn1928d1n298dn18d9n219d8n18n118219d8n21e12903e21kj9012j9301j2391023j209d12dn1928d1n298dn18d9n219d8n18n118219d8n21e12903e21kj9012j9301j2391023j209d12dn1928d1n298dn18d9n219d8n18n118219d8n21e12903e21kj9012j9301j2391023j209d12dn1928d1n298dn18d9n219d8n18n118219d8n21e12903e21kj9012j9301j2391023j209'
In [2]: df
Out[2]: 
                                                 url
0  d12dn1928d1n298dn18d9n219d8n18n118219d8n21e129...

In [3]: df.to_html()
Out[3]: u'<table border="1" class="dataframe">\n  <thead>\n    <tr style="text-align: right;">\n      <th></th>\n      <th>url</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>d12dn1928d1n298dn18d9n219d8n18n118219d8n21e129...</td>\n    </tr>\n  </tbody>\n</table>'

即使在 html 输出中(很明显它不适合屏幕宽度),列值也会被截断。如何强制 pandas 不截断,无论有无 html?

【问题讨论】:

  • 这不是骗人的吗:stackoverflow.com/questions/26277757/…
  • @EdChum 对于非 html 部分,我猜。但是,我也部分地询问它背后的逻辑。为什么对于 html 表,列长度无论如何都不重要,值仍然被截断?
  • 好吧,它也为to_string 执行此操作,至于为什么我认为这只是一个约定,因此您的终端不会因为尝试显示非常宽的数据和大量行而感到厌烦,基础数据是不受影响。

标签: python pandas


【解决方案1】:

您可以关闭截断显示选项:

pd.set_option('display.max_colwidth', None)

或在 Pandas 1.0 之前,

pd.set_option('display.max_colwidth', -1)

【讨论】:

  • "FutureWarning: 传递负整数在 1.0 版中已弃用,未来版本将不再支持。改为使用 None 不限制列宽。"最好使用 None 而不是 -1
【解决方案2】:

作为更新,而不是

pd.set_option('display.max_colwidth', -1)

你现在应该使用

pd.set_option('display.max_colwidth', None)

【讨论】:

    猜你喜欢
    • 2019-04-18
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    相关资源
    最近更新 更多