web-dev-qa-db-ja.com

データフレーム列の科学フォーマットを非表示

pandasデータフレームに4.11889000e + 11のような値を持つaccountnumberという列があります。科学表記法を抑制し、値を4118890000に変換します。次の方法を試しました。うまくいかない。

df = pd.read_csv(data.csv)
pd.options.display.float_format = '{:,.3f}'.format

お勧めしてください。

8
iprof0214

アカウント番号の指数表記はデータファイルから取得する必要があると思います。完全なアカウント番号で小さなcsvを作成すると、pandasはそれらを整数として解釈します。

     acct_num
0  4118890000
1  9876543210

df['acct_num'].dtype
Out[51]: dtype('int64')

ただし、csvのアカウント番号が指数表記で表されている場合、pandasはfloatとして読み取ります。

       acct_num
0  4.118890e+11
1  9.876543e+11

df['acct_num'].dtype
Out[54]: dtype('float64')

2つのオプションがあります。まず、csvを作成するプロセスを修正して、アカウント番号が正しく書き出されるようにします。 2つ目は、acct_num列のデータ型を整数に変更することです。

df['acct_num'] = df['acct_num'].astype('int64')

df
Out[66]: 
       acct_num
0  411889000000
1  987654321000
5
floydn

千の区切り文字「、」と口座番号の3つの小数は必要ありません。

代わりに次を使用してください。

pd.options.display.float_format = '{:.0f}'.format
5
user1319128