如果我将单元格中的换行符放入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)
答案 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
答案 1 :(得分:0)
在&#34; \ n&#34;(\\ n)之前再使用一个反斜杠来考虑&#34; \ n&#34;作为一个新的路线。也适用于<
和>
检查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代码都将被呈现(或需要手动转义)。