-9.90859727969941E-06
このような数値をCSVファイルに出力する際に小数点表示に
したいです
どのようにしたらよろしいですか?。
result_df=pd.DataFrame()
result_df["X"]=X_list
result_df["Y"]=Y_list
result_df.to_csv(output_path,index=False,encoding="cp932")
Xが指数表記です
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
float_format
を指定してください。
Pythonでテキストファイルの出力
pandas.DataFrame.to_csv
Python
1import pandas as pd 2df = pd.DataFrame([-9.90859727969941E-06]) 3df.to_csv('ret.csv',float_format='%.18f') 4# ,0 5# 0,-0.000009908597279699
投稿2019/04/23 05:59
総合スコア38352
0
Python
1v = -9.90859727969941E-06 2print('%f' % v)) 3print(f'{v:f}') 4print('{:f}'.format(v))
など3つぐらい方法がありますがどれも同様の結果であり
-0.000010
という文字列が得られます。小数点以下7桁で四捨五入されるため元の値に対して大分誤差があるのですがその程度の誤差を気にしないならこれでやるのが簡単でしょう。
もし「小数点以下10桁まで表示する」のように桁数が固定でよければ
'%.10f' % v
のようにすれば簡単です。(他の2つの方法でも指定方法は似たようなものです)
一方、元の値の精度を極力保存したいならもっと緻密な方法が必要になると思います。標準提供のライブラリーでそれを直接行えるようなものを自分は知らないので自前で素朴に実装するなら
example.py
Python
1def format_float(v): 2 s = str(v) 3 if 'e' in s: 4 i = s.index('e') 5 exponent = int(s[i + 1:]) 6 mantissa = s[:i] 7 if '.' not in mantissa: 8 frac_len = 0 9 else: 10 frac_len = len(mantissa) - mantissa.index('.') - 1 11 frac_len -= exponent 12 if frac_len <= 0: 13 s = str(int(v)) 14 else: 15 s = f'%.{int(frac_len)}f' % v 16 if '.' not in s: 17 s += '.0' 18 return s 19 20for v in [-9.90859727969941e-06, 1e16, 0]: 21 print(str(v)) 22 print('=>', format_float(v))
===>
bash
1$ python3 example.py 2-9.90859727969941e-06 3=> -0.00000990859727969941 41e+16 5=> 10000000000000000.0 60 7=> 0.0
ところでcsvに出力するとのことですがそれを読むプログラムは何でしょうか?Excelでもpandasやnumpyで読んでも読めると思います。というよりは「小数形式は読み込めるが指数形式だと読み込めない」プログラムの方が珍しくないでしょうか?
少なくとも普通のプログラムを用いてCSVファイルを読み込むならわざわざ指数形式を小数点形式に変換する必要はないと思います。つまり下手に変換して精度が落ちる危険をおかすよりはstr(v)
の値をそのまま出力した方が無難かも知れません。
投稿2019/04/23 06:28
総合スコア18404
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
過去にほぼ同一の質問がされています。
https://teratail.com/questions/8833
投稿2019/04/23 04:59
総合スコア1295
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/23 05:38

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。