Pandas read csv file with float values results in weird rounding and decimal digits

前端 未结 2 1152
独厮守ぢ
独厮守ぢ 2020-11-28 14:15

I have a csv file containing numerical values such as 1524.449677. There are always exactly 6 decimal places.

When I import the csv file (and other colu

2条回答
  •  无人及你
    2020-11-28 14:51

    Pandas uses a dedicated dec 2 bin converter that compromises accuracy in preference to speed.

    Passing float_precision='round_trip' to read_csv fixes this.

    Check out this page for more detail on this.

    After processing your data, if you want to save it back in a csv file, you can pass
    float_format = "%.nf" to the corresponding method.

    A full exemple:

    import pandas as pd
    
    df_in  = pd.read_csv(source_file, float_precision='round_trip')
    df_out = ... # some processing of df_in
    df_out.to_csv(target_file, float_format="%.3f") # for 3 decimal places
    

提交回复
热议问题