【发布时间】:2019-03-04 11:45:20
【问题描述】:
我想用语言环境"de_DE.UTF-8" 渲染一个pandas.Dataframe,其中有一个“,”作为小数点和“。”作为千位分隔符。
当简单地运行locale.format 时,我得到了预期的结果。但是,当添加与 pandas 格式化程序相同的表达式时,呈现的 html 中没有任何变化(尽管没有引发错误)。
示例代码:
import pandas
import locale
locale.setlocale(locale.LC_NUMERIC, 'de_DE.UTF-8')
print(locale.format('%.2f', 1000.245, True))
print(locale.format('%.2f', 10000000.22655, True))
df = pandas.DataFrame({'a': [1000.245, 10000000.22655]})
style = df.style.format(formatter=lambda x: f'{locale.format("%.2f", x, True)} €')
print(style.render())
给出输出:
1.000,25
10.000.000,23
<style type="text/css" >
</style>
<table id="T_f0ae1678_3e71_11e9_8f47_d0bf9ce00d56" >
<thead> <tr>
<th class="blank level0" ></th>
<th class="col_heading level0 col0" >a</th>
</tr></thead>
<tbody> <tr>
<th id="T_f0ae1678_3e71_11e9_8f47_d0bf9ce00d56level0_row0" class="row_heading level0 row0" >0</th>
<td id="T_f0ae1678_3e71_11e9_8f47_d0bf9ce00d56row0_col0" class="data row0 col0" >1000.25 €</td>
</tr> <tr>
<th id="T_f0ae1678_3e71_11e9_8f47_d0bf9ce00d56level0_row1" class="row_heading level0 row1" >1</th>
<td id="T_f0ae1678_3e71_11e9_8f47_d0bf9ce00d56row1_col0" class="data row1 col0" >10000000.23 €</td>
</tr></tbody>
</table>
pandas 是否设置了自己的locale?或者我错过了什么?
谢谢
【问题讨论】:
-
现在;我正在使用来自stackoverflow.com/a/37443934/5804947 的解决方法:
"{:.2f}".format(x).replace(",", "X").replace(".", ",").replace("X", ".")
标签: python pandas formatting locale