Pandas - read_csv 科学记数法大数

问题描述 投票:0回答:3

我正在尝试用 pandas 读取一个 csv 文件,其中有一些行采用科学计数法。

当它读取值时,它并没有捕获真正的基础数字。当我重新调整数据的用途时,真正的价值就会丢失。

df = pd.read_csv('0_IDI_Submitter_out.csv')

我试图保留的基本真实价值观如下:

      INPUT: Extra 1
0     8921107
1     56300839420000
2     56207557000000

然而,pandas 将其读作

 INPUT: Extra 1
0     8921107
1     5.63008E+13
2     5.62076E+13

如果我尝试编写新的 csv 或使用此数据,则值显示为:

 INPUT: Extra 1
0     8921107
1     56300800000000
2     56207600000000

如何让 pandas 读取真实数字而不是导致转换错误的科学记数法?

python pandas scientific-notation
3个回答
4
投票

问题似乎是在 Excel 中打开包含大量数字或显示为大数字的字符串(如产品代码、SKU、UPC 等)的 CSV 文件会自动转换为科学计数法。完成此操作后,您必须手动进入 Excel 并重新格式化,但尝试从 Pandas 执行此操作似乎不可能,并且数据完整性会丢失。

但是,如果我从未在 Excel 中打开文件并纯粹通过 Pandas 处理它,那么一切都很好。同样,如果您纯粹使用 Excel 工作,那也很好。

我的最终结论是,在处理大数字或显示为大数字的字符串(如产品代码或 UPC)时,最好不要将 pandas 与 Excel 混合使用。作为替代方案,我刚刚开始将所有数据帧保存为 pickle 文件而不是 csv。

希望对未来的任何人有帮助。

谢谢


2
投票

似乎无法重现您的问题,但也许这会起作用?

df = pd.read_csv('0_IDI_Submitter_out.csv', dtype={'INPUT: Extra 1':np.object_})

另外,检查数据框的数据类型:

result = df.dtypes
print(result)

0
投票

将数据保存为 Excel (.xlsx) 文件而不是 CSV,并通过 Pandas 读取数据对我来说很有效。

import pandas as pd

df = pd.read_excel('0_IDI_Submitter_out.xlsx')
df.head()

这能够保留原始数据中的精确值。

© www.soinside.com 2019 - 2024. All rights reserved.