1. ホーム
  2. パイソン

[解決済み] 列のフォーマット文字列を使用してfloatのpandas DataFrameを表示するにはどうすればよいですか?

2022-04-05 19:35:25

質問

pandasのデータフレームを指定されたフォーマットで表示したい。 print() とIPythonの display() . 例えば

df = pd.DataFrame([123.4567, 234.5678, 345.6789, 456.7890],
                  index=['foo','bar','baz','quux'],
                  columns=['cost'])
print df

         cost
foo   123.4567
bar   234.5678
baz   345.6789
quux  456.7890

どうにかしてこれを強制的に印刷したい

         cost
foo   $123.46
bar   $234.57
baz   $345.68
quux  $456.79

データそのものを変更したり、コピーを作成したりすることなく、表示方法だけを変更することができます。

どうすればいいのでしょうか?

どのように解決するのですか?

import pandas as pd
pd.options.display.float_format = '${:,.2f}'.format
df = pd.DataFrame([123.4567, 234.5678, 345.6789, 456.7890],
                  index=['foo','bar','baz','quux'],
                  columns=['cost'])
print(df)

イールド

        cost
foo  $123.46
bar  $234.57
baz  $345.68
quux $456.79

が必要な場合のみ有効です。 すべての がドル記号でフォーマットされます。

そうでない場合、一部の浮動小数点数だけドル表示にしたいのであれば、データフレームを事前に修正する必要があると思います(それらの浮動小数点数を文字列に変換する)。

import pandas as pd
df = pd.DataFrame([123.4567, 234.5678, 345.6789, 456.7890],
                  index=['foo','bar','baz','quux'],
                  columns=['cost'])
df['foo'] = df['cost']
df['cost'] = df['cost'].map('${:,.2f}'.format)
print(df)

イールド

         cost       foo
foo   $123.46  123.4567
bar   $234.57  234.5678
baz   $345.68  345.6789
quux  $456.79  456.7890