You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas将JSON转为DataFrame时所有字段显示为Object类型的问题

Pandas读取JSON后列类型全为Object的原因及解决办法

问题原因

你的JSON数据中所有字段都以字符串格式存储(比如"id": "123"是带引号的字符串而非数字,"created"的时间值也是字符串),Pandas读取这类JSON时,会默认将字符串类型的字段识别为object类型。另外你的代码存在几处小错误:变量名写错(finout应为fInput)、拼写错误(ecoding需改为encoding)、路径中的\x会被当成转义字符,建议使用原始字符串定义路径。

解决步骤

1. 修正代码基础错误

先把代码里的拼写和变量问题修复:

import pandas as pd
# 用原始字符串避免转义问题
fInput = r'\x\y\file.txt'
with open(fInput, encoding='utf-16') as inputfile:
    df = pd.read_json(inputfile)
df.info()

2. 转换列到真实数据类型

读取完成后,手动将对应列转换为目标数据类型:

  • 转换id列为整数类型:
    df['id'] = df['id'].astype(int)
    
  • 转换created列为日期时间类型:
    df['created'] = pd.to_datetime(df['created'])
    

3. 读取时指定部分字段类型(可选)

对于数值类字段,可以在读取阶段直接用dtype参数指定类型,日期字段仍需后续转换:

df = pd.read_json(inputfile, dtype={'id': int})
# 转换日期列
df['created'] = pd.to_datetime(df['created'])

完成上述操作后,再次执行df.info()就能看到各列的真实数据类型,之后就可以根据类型遍历列执行对应操作。

内容的提问来源于stack exchange,提问作者reddwarfcrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 23:50:35