pd.read_csv() 保留小数位数

pd.read_csv() keep number of decimals

提问人:arkriger 提问时间:5/26/2022 更新时间:5/26/2022 访问量:885

问:

我想读取 csv,但它剔除了小数点后的数量:

fname = './sol/Pret-SB_A00DLR0_202205240635.pos'
skiprow = 0
with open(fname) as search:
    for i, line in enumerate(search):
        if "%  GPST" in line:
            skiprow = i
            break
df = pd.read_csv(fname, skiprows=skiprow, delim_whitespace=True, parse_dates=[[0, 1]])
df.head(2)

给出(前 2 行,前 5 列):

在此处输入图像描述

原始数据(此处)在第 3 列和第 4 列中有 8 位小数。我需要那些。

2211 196568.000 -25.732036008 28.282629130 1387.8994
2211 196569.000 -25.732032386 28.282633712 1389.4025

如何读取 csv 并保持原始数据的精度?

python pandas csv 十进制 精度

评论


答:

1赞 Daweo 5/26/2022 #1

如何读取 csv 并保持原始数据的精度?

您确实拥有它,只需出于演示目的限制位数,请考虑以下示例pandas

import pandas as pd
df = pd.DataFrame({'x':[28.282633712]})
print(df)
print(df.x[0])
print(df.x[0] == 28.282633712)

给出输出

           x
0  28.282634
28.282633712
True
0赞 hansestadt_greifswald 5/26/2022 #2

您可以按如下方式将显示的位数设置为 8:

pd.options.display.float_format = "{:,.8f}".format 
0赞 AKS 5/26/2022 #3

读取 csv 时需要使用“precision”参数

#read text file
pd.read_csv(f,float_precision='round_trip',delimiter = "\t")

#read csv
pd.read_csv(f,float_precision='round_trip')