如何更改html输出的数字数据格式

时间:2017-09-12 15:51:57

标签: python pandas

我有代码来生成pandas数据帧并以html格式发送电子邮件 我遇到的问题很难将数字的科学格式改为一般的样式

我已经尝试设置浮动格式,但它不起作用。

tools

输出:

pd.options.display.float_format = '{:20,.2f}'.format

预计会出现:

Col A        Col B
1.00E+06    2.28E+06
3.00E+07    -2.54E+07

2 个答案:

答案 0 :(得分:4)

我试过这个并且有效:

df = pd.DataFrame([[3.371e17,9.82173e15],[8e12,8e8]],columns=['A','B'])

df.to_html(float_format='{:20,.2f}'.format)

这一般不会改变df的格式,只是html输出,即:

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>A</th>
      <th>B</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>337,100,000,000,000,000.00</td>
      <td>9,821,730,000,000,000.00</td>
    </tr>
    <tr>
      <th>1</th>
      <td>8,000,000,000,000.00</td>
      <td>800,000,000.00</td>
    </tr>
  </tbody>
</table>

答案 1 :(得分:2)

我无法用你说的例子重现你的问题。它可能会改变代码中的数据帧格式。但我相信这段代码可以帮到你:

import pandas as pd
df = pd.DataFrame({"Col A":[1000420, 30030200],"Col B": [2281190, -25383100]})
for col in df:
    df[col] = df[col].apply(lambda x: "%.f" % x)

通过这个你获得输出:

>>> df
      Col A      Col B
0   1000420    2281190
1  30030200  -25383100