将 Pandas 数据框的全部内容写入 HTML 表

Posted

技术标签:

【中文标题】将 Pandas 数据框的全部内容写入 HTML 表【英文标题】:Writing full contents of Pandas dataframe to HTML table 【发布时间】:2014-09-24 02:21:14 【问题描述】:

我在 Pandas 数据框(下表)的一列中嵌入链接并将数据框写入 hmtl。

数据框表中的链接格式如下所示(索引表中的第一个链接):

In: table.loc[0,'Links']
Out: u'<a href="http://xxx.xx.xxx.xxx/browser/I6.html">I6</a>'

如果我查看(而不是索引特定行)数据框(在笔记本中),链接文本将被截断:

<a href="http://xxx.xx.xxx.xxx/browser/I6.html...  

我将数据框写入 html:

table_1=table.to_html(classes='table',index=False,escape=False)

但是,被截断的链接(而不是全文)被写入 html 表:

 <td> <a href="http://xxx.xx.xxx.xxx/browser/I6.html...</td>\n

我可能需要一个额外的 to_html() 参数。

现在查看文档,但建议表示赞赏:

http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.to_html.html

谢谢!

【问题讨论】:

我已经向 pandas 提交了一个pull request 以使这种事情变得更容易。 【参考方案1】:

所以可能有一个特定于 pandas 的解释,但您也可以通过 (a) 用键值替换链接,(b) 编写 html 表字符串,然后 (c) 替换键来解决这个问题与适当的链接。

例如,用一个键替换每个链接,将键存储在一个字典中:

map = 
for i in df.index:
    counter = 0
    if df.ix[i]['Links'] in map:
        df.ix[i, 'Links'] = map[df.ix[i]['Links']]
    else:
        map[df.ix[i, 'Links']] = 'href' + str(counter)
        counter += 1
        df.ix[i, 'Links'] = map[df.ix[i]['Links']]

写表:

table_1 = df.to_html(classes='table',index=False,escape=False)

重写链接:

for key, value in map.iteritems():
    table_1 = table_1.replace(value, key)

【讨论】:

谢谢,这应该可以。我最终通过增加数据框列宽在熊猫中解决了它:pd.options.display.max_colwidth = 100

以上是关于将 Pandas 数据框的全部内容写入 HTML 表的主要内容,如果未能解决你的问题,请参考以下文章

python将pandas dataframe内容写入ElasticSearch实战

使用 SqlAlchemy 和 cx_Oracle 将 Pandas DataFrame 写入 Oracle 数据库时加快 to_sql()

pandas 数据框的颜色行并转换为 HTML 表

将 Pandas 数据框的选择保存到 csv [重复]

将单个 Pandas 数据框转换为多年数据框的功能

将实际数据覆盖在来自 pandas 数据框的箱线图上