编辑:ipython笔记本中的pandas多行值

时间:2015-05-21 07:11:35

标签: python pandas ipython-notebook

如果我将单元格中的换行符放入pandas数据帧中,例如:

pd.DataFrame(data=[["""aa\n<br>
bb"""], ['bb']], columns=["col"])

我得到了所有&#34;换行符&#34;被逃脱了。 (html源代码如下:&lt; td&gt; aa \ n&amp; lt; br&amp; gt; \ n \ nbb&lt; / td&gt;)

有没有办法在单元格中获取格式化多行输出的表格?

修改: 灵感来自firelynx我现在可以使用它:

EDIT2 : html转义已添加

EDIT3 : td和th标签的nowrap属性

df=pd.Dataframe(...)  # see definition above
from IPython.display import HTML
import cgi

def escape(a):
    return cgi.escape(a).replace('\n','<br>')

htm='<table>'+\
    '<thead><tr><th></th>'+\
    ''.join(['<th nowrap>'+escape(c)+\
    '</th>' for c in df])+'</tr></thead>'+ \
    '<tbody>'+''.join(['<tr>'+'<th>'+str(r[0])+\
    '</th>'+''.join(['<td nowrap>'+escape(c)+\
    '</td>' for c in r[1]])+'</tr>' for r in enumerate(df.values)])+\
    '</tbody></table>'
#print(htm)
HTML(htm)

3 个答案:

答案 0 :(得分:1)

如果您只是按照自己的方式从单元格返回值,ipython笔记本会为您格式化数据。

要查看实际值,您必须明确打印它,请查看此处:

df = pd.DataFrame(data=[["""aa\n<br>
bb"""], ['bb']], columns=["col"])
print df.ix[0].col

aa
<br>
bb

所以没有什么是错的,只是ipython表示没有显示真相。

有一些显示选项可以更改,但没有任何内容可以撤消此默认行为。 显示选项由例如:

设置
pd.options.display.expand_frame_repr = False

Display option reference

答案 1 :(得分:0)

在&#34; \ n&#34;(\\ n)之前再使用一个反斜杠来考虑&#34; \ n&#34;作为一个新的路线。也适用于&lt;&gt;检查pd.DataFrame是否有任何其他变量,我们可以提到数据是html。

答案 2 :(得分:0)

您可以使用to_html功能并将escape参数设置为False

import pandas as pd
from IPython.core.display import HTML

df = pd.DataFrame(data=[['aa<br>bb'], ['bb']], columns=['col'])

HTML(df.to_html(escape=False))

这将使Pandas逃脱<br>。 但请注意,表格中的任何HTML代码都将被呈现(或需要手动转义)。