フォーマットする必要のある次のデータがあります。
Ativo high close
HTMX11 169.8 169.8
KNHY11 116.0 116.0
FAED11 272.3 272.3
FLRP11 1579.92 1579.92
FVPQ11 215.5 215.5
1579.92を1.579,92に変換する必要があります
私は次のことができるので、問題ありません:
import pandas as pd
import locale
locale.setlocale (locale.LC_ALL, 'pt_br.utf-8')
pd.set_option ('display.float_format', lambda x: locale.format ('%. 2f', x, grouping = True))
ただし、列を文字列に変換して文字を追加する必要がある場合、数値はコンマのみで保持されます。
完全なフォーマットが必要です。
df['close'] = '$' + df['close'].astype()
df['close']
結果:
Fechamento
R$ 169,8
R$ 116,0
R$ 272,3
R$ 1579,92
R$ 215,5
必要な出力:
R$ 1.579,92
お気づきのように、このdisplay
オプションはディスプレイにのみ影響します。したがってlocale.format()
、実際に列を文字列に変換する場合は、おそらくを使用して、明示的な変換を行う必要があります。
また、locale
メソッドの機能も多少制限されているため、国際化とローカリゼーションにはBabelモジュールを使用することをお勧めします。Babelはより豊富なAPIを備えており、実際に使用できるローカリゼーションデータを出荷します(したがって、OSで利用可能であることに依存する必要はありません)。通貨に関するデータも含まれているため、変換も実行できます。
次のコマンドでBabelをインストールできます。
pip install Babel
次に、列を変換してブラジルレアル通貨を使用できます。
from babel.numbers import format_currency
df['close'] = df['close'].apply(
lambda v: format_currency(v, 'BRL', locale='pt_BR'),
)
または、「高」と「近い」の両方を一緒に変換するには:
df[['high', 'close']] = df[['high', 'close']].applymap(
lambda v: format_currency(v, 'BRL', locale='pt_BR'),
)
DataFrameからHTMLを生成している場合(たとえば、Jupyterノートブックで)、Styling APIを使用して、DataFrameをレンダリングするときにのみフォーマットを適用し、基になるデータを文字列ではなく浮動小数点数として保持できます。
df.style.format(
lambda v: format_currency(v, 'BRL', locale='pt_BR'),
subset=['high', 'close'],
)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加