繁体   English   中英

Pandas:语言环境格式在 style.format() 中不起作用

[英]Pandas: Locale format not working in style.format()

我想用语言环境"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>

熊猫是否设置了自己的locale 或者我错过了什么? 谢谢

这似乎是较旧的熊猫版本(<2020)中的一个错误,请更新您的熊猫。

版本:'1.1.3' 输出:

<style  type="text/css" >
</style><table id="T_82df8768_b9b1_11eb_a80f_88d7f6c760ad" ><thead>    <tr>        <th class="blank level0" ></th>        <th class="col_heading level0 col0" >a</th>    </tr></thead><tbody>
                <tr>
                        <th id="T_82df8768_b9b1_11eb_a80f_88d7f6c760adlevel0_row0" class="row_heading level0 row0" >0</th>
                        <td id="T_82df8768_b9b1_11eb_a80f_88d7f6c760adrow0_col0" class="data row0 col0" >1.000,25 €</td>
            </tr>
            <tr>
                        <th id="T_82df8768_b9b1_11eb_a80f_88d7f6c760adlevel0_row1" class="row_heading level0 row1" >1</th>
                        <td id="T_82df8768_b9b1_11eb_a80f_88d7f6c760adrow1_col0" class="data row1 col0" >10.000.000,23 €</td>
            </tr>
    </tbody></table>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM