首页 > 解决方案 > Pandas 在推断 dtypes 时改变值

问题描述

我遇到了以下问题:

我有这个结构为文件的jsonlines文件:

{"id": 1, "uuid": "1344800117571260417"}
{"id": 2, "uuid": "1344900117571260918"}

如果我尝试像这样使用 Pandas 阅读它:

df = pd.read_json('file.jsonl', orient='records', lines=True)

我得到以下信息DataFrame

   id                 uuid
0   1  1344800117571260416
1   2  1344900117571260928

但是uuid有不同的值,我想这里会发生一些溢出,但我不确定。pandas为该列推断的类型是int64,但是np.iinfo(np.int64).max9223372036854775807,远高于该uuid列的值。

这个问题的一个直接解决方案是禁用推断类型,例如pd.read_json(..., dtype=False),但我对这种意外行为感到好奇,有谁知道为什么会这样?

顺便说一句,我正在使用pandasversion1.0.1pythonversion 3.7.6

标签: pythonpandas

解决方案


正如评论中发布的那样,pandas确实int(float(x))是该错误的原因。我提交了报告错误的票,你可以在这里查看


推荐阅读