何度も同じことをググって使っているので、自分なりにメモします。pandas にデータを格納してto_csv としてファイルに保存するときに使います。公開するようのきれいな形式にしたい場合、桁数をそろえたいときに使います。
float のフォーマットを整える
- float 全体に指定するには、to_csv の引数に
float_format="%10.4f"
のように設定できる -
round()
を使えます。- Series に対して整数を引数にし、小数点や整数の桁数(百の位なら-2)で丸めることができる。
- DataFrame に
round
を用いる場合は、引数に辞書をとることで、複数の列に対して独立した設定をできる。
- 各列ごとに形式を指定するには、map(lambda x: '{形式}'.format(x)) で指定できる。小数点以下1桁なら
{0:.1f}
、指数表記にしたければ{:.6e}
のようにできる。
import pandas as pd
df = pd.read_csv("latlon.csv")
df['val'] = df['val'].map(lambda x: '{0:.1f}'.format(x))
df.to_csv("out.csv", index=False, header=True, float_format='%11.6f')
で、out.csv は
year,month,day,lat,lon,val
2012,6,16,80.862745,-39.834254,0.0
2012,6,16,80.862745,-39.502762,0.1
のように出力されます。同内容は round
を用いて、
df = df.round({"lat":7, "lon":7, "val":1})