擅长:python、mysql、java
<p>正如您所注意到的,<code>display</code>选项只影响显示。因此,如果要将列实际转换为字符串,则需要执行显式转换,可能需要使用<code>locale.format()</code></p>
<p><code>locale</code>方法的功能也有一定的限制,因此我建议使用<a href="http://babel.pocoo.org/en/latest/" rel="nofollow noreferrer">Babel</a>模块进行国际化和本地化。Babel有一个更丰富的API,它实际上提供了您可以使用的本地化数据(因此您不需要依赖于它在您的O.S.中的可用性)。它还包括有关货币的数据,因此它也可以为您进行转换</p>
<p>您可以通过以下方式安装Babel:</p>
<pre><code>pip install Babel
</code></pre>
<p>然后,您可以将您的列转换为使用巴西真实货币,并使用:</p>
<pre><code>from babel.numbers import format_currency
df['close'] = df['close'].apply(
lambda v: format_currency(v, 'BRL', locale='pt_BR'),
)
</code></pre>
<p>或者,要同时转换“高”和“近”:</p>
<pre><code>df[['high', 'close']] = df[['high', 'close']].applymap(
lambda v: format_currency(v, 'BRL', locale='pt_BR'),
)
</code></pre>
<p>如果要从数据帧生成HTML(例如,在Jupyter笔记本中),则可以使用<a href="https://pandas.pydata.org/pandas-docs/stable/user_guide/style.html" rel="nofollow noreferrer">Styling API</a>仅在呈现数据帧时应用该格式,将基础数据保持为浮点数而不是字符串:</p>
<pre><code>df.style.format(
lambda v: format_currency(v, 'BRL', locale='pt_BR'),
subset=['high', 'close'],
)
</code></pre>