pandas.to_html()返回无

时间:2015-06-03 10:09:06

标签: python pandas

我正在尝试使用formatters参数将html属性添加到特定的单元格/文本中。 我发现answer完全符合我的要求。无论如何尝试,都会导致返回None。 我正在尝试的例子:

import pandas as pd
from StringIO import StringIO

buf = StringIO()
significant = lambda x: '<span class="significant">%f</span>' % x if x<0.05 else str(x)
df = pd.DataFrame({'correlation':[0.5, 0.1,0.9], 'p_value':[0.1,0.8,0.01]})
print df.to_html(buf, formatters={'p_value': significant}, escape=False)

此问题来自2013年。语法是否从一个版本更改为另一个版本? 我正在使用python Python 2.7.9 pandas 0.16.0。

2 个答案:

答案 0 :(得分:1)

df.to_html()方法没有返回输出,输出返回到buf stringIo对象,以后可以方便地写。 我期待的是:

   import pandas as pd
   significant = lambda x: '<span class="significant">%f</span>' % x if x<0.05 else str(x)
   df = pd.DataFrame({'correlation':[0.5, 0.1,0.9], 'p_value':[0.1,0.8,0.01]})
   print df.to_html(formatters={'p_value': significant}, escape=False)

答案 1 :(得分:1)

您已为DataFrame.to_html函数提供了一个StringIO缓冲区,这意味着将结果写入其中,而不是以字符串形式返回。

Pandas version 0.10 of DataFrame.to_html() function

以来,这一点没有改变

要将输出作为返回的字符串,只需删除缓冲区:

import pandas as pd


df = pd.DataFrame(
    {'correlation':[0.5, 0.1,0.9],
     'p_value':[0.1,0.8,0.01]})
strformat = '<span class="significant">%f</span>'
significant = lambda x: strformat % x if x<0.05 else str(x)
formatters = {'p_value': significant}

print df.to_html(formatters=formatters, escape=False)

或者,如果你想使用缓冲区,这就是如何打印它的值:

from StringIO import StringIO
import pandas as pd

df = pd.DataFrame(
    {'correlation':[0.5, 0.1,0.9],
     'p_value':[0.1,0.8,0.01]})
strformat = '<span class="significant">%f</span>'
significant = lambda x: strformat % x if x<0.05 else str(x)
formatters = {'p_value': significant}

buf = StringIO()
df.to_html(buf, formatters=formatters, escape=False)
print buf.getvalue()
相关问题