问题描述

我有一个包含文本数据的 Python Pandas DataFrame 对象。我的问题是,当我使用 to_html()函数时,它会截断输出中的字符串。

例如:

import pandas
df = pandas.DataFrame({'text': ['Lorem ipsum dolor sit amet, consectetur adipiscing elit.']})
print (df.to_html())

输出在 adapis... 截断

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>text</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td> Lorem ipsum dolor sit amet, consectetur adipis...</td>
    </tr>
  </tbody>
</table>

在 SO 上有一个相关的问题,但它使用占位符和搜索/替换功能来后处理 HTML,我想避免:

这个问题有更简单的解决方案吗?我找不到与 documentation 相关的任何内容。

最佳解决思路

你看到的是 Pandas 截断输出仅用于显示目的。

默认的 max_colwidth 值是 50,这是你看到的。

您可以将此值设置为任何您想要的值,也可以将其设置为-1,这有效地将其关闭:

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

虽然我建议反对这一点,但最好将其设置为可以在控制台或 ipython 中轻松显示的内容。

选项列表可以在这里找到:http://pandas.pydata.org/pandas-docs/stable/options.html

次佳解决思路

似乎 pd.set_option('display.max_colwidth', -1)确实是唯一的选择。为了防止在控制台中显示数据框的不可逆的全局变化,您可以将以前的设置保存在变量中,并在使用后立即恢复,如下所示:

    old_width = pd.get_option('display.max_colwidth')
    pd.set_option('display.max_colwidth', -1)
    open('some_file.html', 'w').write(some_data.to_html())
    pd.set_option('display.max_colwidth', old_width)

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。