Pandas 熊猫到_csv数值精度

Pandas 熊猫到_csv数值精度,pandas,csv,precision,Pandas,Csv,Precision,我在将一些数字精度数字转换为熊猫的CSV时遇到了麻烦 在这个转换过程中,我必须尽可能精确,但我不知道pandas是错误的还是我的格式不充分 我已经尝试过混合一些不同的float_格式,从10到20,但我不知道这是不是一种方法 import pandas as pd import numpy as np data = [] for i in range(0,20): data.append({ 'number': 123456789*(10**-i) })

我在将一些数字精度数字转换为熊猫的CSV时遇到了麻烦

在这个转换过程中,我必须尽可能精确,但我不知道pandas是错误的还是我的格式不充分

我已经尝试过混合一些不同的float_格式,从10到20,但我不知道这是不是一种方法


import pandas as pd
import numpy as np

data = []

for i in range(0,20):
    data.append({
        'number': 123456789*(10**-i)
    })    

df = pd.DataFrame(data,dtype=np.float64)
print(df.to_csv(index=False,float_format="%.20f"))


输出:

number
123456789.00000000000000000000
12345678.90000000037252902985
1234567.89000000013038516045
123456.78900000000430736691
12345.67890000000079453457
1234.56789000000003397872
123.45678900000000055570
12.34567889999999934503
1.23456789000000011214
0.12345678900000001121
0.01234567890000000043
0.00123456788999999991
0.00012345678900000000
0.00001234567890000000
0.00000123456789000000
0.00000012345678900000
0.00000001234567890000
0.00000000123456789000
0.00000000012345678900
0.00000000001234567890
如您所见,第二个数字在.9000之后有很多无意义的数字(这里有几个零)。有没有办法避免这些数字出现在我的CSV上

我的主要目标是在点之后只有零

Expected Output:

number
123456789.00000000000000000000
12345678.900000000000000000000
1234567.8900000000000000000000
123456.78900000000000000000000
12345.6789000000000000000
1234.56789000000000000000
123.45678900000000000000

. . .

0.00012345678900000000
0.00001234567890000000
0.00000123456789000000
0.00000012345678900000
0.00000001234567890000
0.00000000123456789000
0.00000000012345678900
0.00000000001234567890


是我太傻了还是这真的是一个无利可图的场景?

只要你不需要在最后一个有效数字后面有一定数量的零,然后将最后一行更改为:

print(df.to_csv(index=False,float_format="%.10g")
仅提供10个有效数字,因此输出为:

number

123456789

12345678.9

1234567.89

123456.789

12345.6789

1234.56789

123.456789

12.3456789

1.23456789

0.123456789

0.0123456789

0.00123456789

0.000123456789

1.23456789e-05

不清楚问题出在哪里。你能给出预期输出的例子吗?