我已经转储了一个基于this answer扩展json编码器的数据帧目录。我只是改变了转储数据帧的方式,将orient=“records”更改为orient=“table”,以供自己使用
不知何故,我无法从json读取数据帧;准确地说,熊猫似乎读得很好(没有提出例外),但它充满了NaN值
有人能检查我是否做错了什么,或者这是否是熊猫的bug(可能指的是多索引数据帧)
我使用的是熊猫1.1.4版
下面的代码(我希望)足以测试pandas是否在我的机器上运行,或者我是否弄乱了数据帧的格式。我还试图用一个包含两个索引的虚拟数据帧来重现这一点,但没有遇到麻烦
还请注意,json显示了一个“pandas_version”:“0.20.0”,这与我的版本不一致(我刚刚进行了一次新的安装,以确保它保持不变)。我已经看到相同的0.20.0版本显示在the doc的当前版本示例中
import pandas as pd
s = """{
"schema": {
"fields": [{
"name": "grandeur",
"type": "string"
}, {
"name": "unite",
"type": "string"
}, {
"name": "year",
"type": "integer"
}, {
"name": 1,
"type": "number"
}, {
"name": 2,
"type": "number"
}, {
"name": 3,
"type": "number"
}, {
"name": 4,
"type": "number"
}, {
"name": 5,
"type": "number"
}, {
"name": 6,
"type": "number"
}, {
"name": 7,
"type": "number"
}, {
"name": 8,
"type": "number"
}, {
"name": 9,
"type": "number"
}, {
"name": 10,
"type": "number"
}, {
"name": 11,
"type": "number"
}, {
"name": 12,
"type": "number"
}
],
"primaryKey": ["grandeur", "unite", "year"],
"pandas_version": "0.20.0"
},
"data": [{
"grandeur": "Volumetric soil water layer 1",
"unite": "m3 m-3",
"year": 1981,
"1": 0.3893150916,
"2": 0.3614713229,
"3": 0.3965121538,
"4": 0.3513062306,
"5": 0.3860211495,
"6": 0.3507631742,
"7": 0.3499931922,
"8": 0.3195245205,
"9": 0.3078848032,
"10": 0.3917079828,
"11": 0.380486904,
"12": 0.3987094194
}, {
"grandeur": "Volumetric soil water layer 1",
"unite": "m3 m-3",
"year": 1982,
"1": 0.3924450997,
"2": 0.360954089,
"3": 0.3714920435,
"4": 0.3366828332,
"5": 0.329994006,
"6": 0.3659116305,
"7": 0.3035419171,
"8": 0.3143600073,
"9": 0.3099404359,
"10": 0.3938543858,
"11": 0.383870834,
"12": 0.3909665621
}]
}"""
pd.read_json(s, orient="table")
这是因为架构中的字段与数据中的键不匹配
比如说,
模式
资料
====================================================================================
如果将架构更改为与数据键匹配
read_json
应正确读取模式
资料
如果示例json字符串是由pandas
to_json
生成的,那么它为整数列名生成了错误的模式相关问题 更多 >
编程相关推荐