Python初心者として、私は最近、Py2.7で次のようなことができることを発見しました。
_print '{:20,.2f}'.format(123456789)
_
結果の出力が得られます。
_123,456,789.00
_
pandas dfに対して同様の結果が得られるようになりましたので、コードは次のようになりました。
_import pandas as pd
import random
data = [[random.random()*10000 for i in range(1,4)] for j in range (1,8)]
df = pd.DataFrame (data)
print '{:20,.2f}'.format(df)
_
この場合、エラーが発生します。
_ Unknown format code 'f' for object of type 'str'
_
'{:20,.2f}'.format(df)
のようなものを実行するための提案はありますか?
今の私の考えは、データフレーム(小さなもの)にインデックスを付け、その中の個々のフロートをフォーマットし、astype(str)を割り当てて、DF ...を再構築することですが醜いように見えます:-(そしてそれがうまくいくかどうかさえわかりません..
どう思いますか ?私は立ち往生しています...そして、これらがreportlabsグリッドに変換されるときに、データフレームのより良いフォーマットが欲しいです。
import pandas as pd
import numpy as np
data = np.random.random((8,3))*10000
df = pd.DataFrame (data)
pd.options.display.float_format = '{:20,.2f}'.format
print(df)
収量(に類似したランダム出力)
0 1 2
0 4,839.01 6,170.02 301.63
1 4,411.23 8,374.36 7,336.41
2 4,193.40 2,741.63 7,834.42
3 3,888.27 3,441.57 9,288.64
4 220.13 6,646.20 3,274.39
5 3,885.71 9,942.91 2,265.95
6 3,448.75 3,900.28 6,053.93
pd.set_option
またはpd.describe_option
のdocstringは次のように説明しています。
display.float_format: [default: None] [currently: None] : callable
The callable should accept a floating point number and return
a string with the desired format of the number. This is used
in some places like SeriesFormatter.
See core.format.EngFormatter for an example.