推断 dtypes 时 Pandas 会改变值

Gio*_*cia 7 python pandas

我遇到了以下问题:

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

{"id": 1, "uuid": "1344800117571260417"}
{"id": 2, "uuid": "1344900117571260918"}
Run Code Online (Sandbox Code Playgroud)

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

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

我得到以下信息DataFrame

   id                 uuid
0   1  1344800117571260416
1   2  1344900117571260928
Run Code Online (Sandbox Code Playgroud)

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

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

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

Gio*_*cia 1

正如评论中所发布的,pandas确实如此int(float(x)),这就是该错误的原因。我提交了一张票来报告该错误,您可以在这里查看。