我正在尝试使用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。
答案 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()