当我运行下面的行时,数据框中的NaN编号不会被修改。利用与.to_csv()
完全相同的参数,我得到了预期的结果。 .to_html
需要不同的东西吗?
df.to_html('file.html', float_format='{0:.2f}'.format, na_rep="NA_REP")
答案 0 :(得分:3)
看起来float_format
与na_rep
的效果不佳。但是,如果将函数传递给有条件地处理NaN的函数float_format
以及所需的浮点格式,则可以解决此问题:
>>> df
Group Data
0 A 1.2225
1 A NaN
重现您的问题:
>>> out = StringIO()
>>> df.to_html(out,na_rep="Ted",float_format='{0:.2f}'.format)
>>> out.getvalue()
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>Group</th>
<th>Data</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td> A</td>
<td>1.22</td>
</tr>
<tr>
<th>1</th>
<td> A</td>
<td> nan</td>
</tr>
</tbody>
因此,您获得了正确的浮点精度,但没有正确的na_rep
。但以下似乎有效:
>>> out = StringIO()
>>> fmt = lambda x: '{0:.2f}'.format(x) if pd.notnull(x) else 'Ted'
>>> df.to_html(out,float_format=fmt)
>>> out.getvalue()
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>Group</th>
<th>Data</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td> A</td>
<td>1.22</td>
</tr>
<tr>
<th>1</th>
<td> A</td>
<td> Ted</td>
</tr>
</tbody>
</table>