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

Pandas使用orient='table'序列化回读时整数列名返回NaN问题咨询

问题性质判定

这是Pandas旧版本的已知Bug,你使用的0.25.2版本属于受影响范围。
核心触发逻辑:orient="table"格式导出时,旧版本Pandas会保留整数类型的列名写入schema字段,但JSON规范要求对象键必须为字符串,因此导出的data段中实际的列键会被自动转为字符串。回读时Pandas用整数类型的列名去匹配字符串类型的键,匹配失败就会返回NaN。该问题在Pandas 1.2.0及以上版本已经被官方修复,可升级Pandas版本直接解决。

规范解决方案

根据使用场景可以选择以下更简洁的处理方式:

  • 允许修改原始DataFrame结构的场景,从根源避免问题:
    创建DataFrame时直接指定字符串格式的列名,或者将已有DataFrame的列名批量转为字符串,无需修改导出的JSON schema:
    import pandas as pd
    arr = ["123"]
    # 方式1:创建时指定字符串列名
    dataframe = pd.DataFrame(arr, columns=['0'])
    # 方式2:已有DataFrame批量转换列名类型
    # dataframe.columns = dataframe.columns.astype(str)
    
    # 互转逻辑完全正常
    dataframe_table_schema = dataframe.to_json(orient='table')
    dataframe = pd.read_json(dataframe_table_schema, orient='table')
    print(dataframe)
    
  • 不允许修改原始列名、也无法升级Pandas版本的场景:
    你当前修改schema字段的方案是该场景下的标准兼容方案,可正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:36:05