python - 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).max
是9223372036854775807
,远高于该uuid
列的值。
这个问题的一个直接解决方案是禁用推断类型,例如pd.read_json(..., dtype=False)
,但我对这种意外行为感到好奇,有谁知道为什么会这样?
顺便说一句,我正在使用pandas
version1.0.1
和python
version 3.7.6
。
解决方案
正如评论中发布的那样,pandas
确实int(float(x))
是该错误的原因。我提交了报告错误的票,你可以在这里查看。
推荐阅读
- sql - 为其他列中存在相同数据的列转换一行
- azure - 获取 azurerm_mariadb_virtual_network_rule 的“等待创建或更新虚拟网络规则“(服务器,rg)时出错...”
- python - CPython API - Py_BuildValue() 出现错误(退出代码 -1073741819)
- python - 如何在 numpy 结构化数组自定义类型上使用 isinstance()
- python - Kivy 下拉菜单未显示
- python - 为什么 or-tools 中的这个布尔变量不起作用?
- c++ - 严重性代码描述项目文件行抑制状态错误 C3872 '0x2019':标识符中不允许使用此字符
- integration - 我如何知道选择哪个 NetSuite 集成选项(suiteTalk、suitelet 或 restlet)将 NetSuite 集成到我们的第三方应用程序?
- azure - Microsoft Azure 公开定价
- sql - 条件包含 IN 语句的 CASE 语句 redshift