我正在尝试用 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 读取真实数字而不是导致转换错误的科学记数法?
问题似乎是在 Excel 中打开包含大量数字或显示为大数字的字符串(如产品代码、SKU、UPC 等)的 CSV 文件会自动转换为科学计数法。完成此操作后,您必须手动进入 Excel 并重新格式化,但尝试从 Pandas 执行此操作似乎不可能,并且数据完整性会丢失。
但是,如果我从未在 Excel 中打开文件并纯粹通过 Pandas 处理它,那么一切都很好。同样,如果您纯粹使用 Excel 工作,那也很好。
我的最终结论是,在处理大数字或显示为大数字的字符串(如产品代码或 UPC)时,最好不要将 pandas 与 Excel 混合使用。作为替代方案,我刚刚开始将所有数据帧保存为 pickle 文件而不是 csv。
希望对未来的任何人有帮助。
谢谢
似乎无法重现您的问题,但也许这会起作用?
df = pd.read_csv('0_IDI_Submitter_out.csv', dtype={'INPUT: Extra 1':np.object_})
另外,检查数据框的数据类型:
result = df.dtypes
print(result)
将数据保存为 Excel (.xlsx) 文件而不是 CSV,并通过 Pandas 读取数据对我来说很有效。
import pandas as pd
df = pd.read_excel('0_IDI_Submitter_out.xlsx')
df.head()
这能够保留原始数据中的精确值。