【发布时间】:2021-08-27 11:22:14
【问题描述】:
假设我有一些 JSON 如下
response = {
"totalrecords": 2,
"data": [
{
"stateCd": "U.K",
"stateName": "uttarakhand",
"details": {
"id": [
"2312-k",
"2312-k"
],
"date": [
"10-OCT-2019",
"11-OCT-2019"
],
"icp": [
2233,
6443
],
"icpr": [
3.434,
23.232
]
}
},
{
"stateCd": "U.P",
"stateName": "uttar pradesh",
"details": {
"id": [
"2712-k",
"5412-k"
],
"date": [
"10-OCT-2019",
"11-OCT-2019"
],
"icp": [
2233,
6443
],
"icpr": [
32.434,
31.232
]
}
}
]
}
我想把它转换成如下的数据框
但在尝试使用pandas.json_normalize() 将其转换为数据帧时
我无法达到我想要的输出
我尝试过的:
data_trunc=response['data'] # to extract data from response
pd.json_normalize(data_trunc)
pd.json_normalize(data_trunc,record_path=['details','id'],meta=['stateCd','stateName'])
但这不包括date、icp、icpr 列
所以我尝试了不同的排列组合
pd.json_normalize(data_trunc,record_path=[['details','id'],['date']],meta=['stateCd','stateName'])
pd.json_normalize(data_trunc,record_path=[['details','id'],['details'.'date']],meta=['stateCd','stateName'])
但遇到同样的错误TypeError: unhashable type: 'list'
【问题讨论】:
-
你的
response = {...}实际上不是JSON,它是一个Pythondict,当这样格式化时看起来像JSON。 (虽然在这里没关系,因为pandas.json_normalize()确实需要dict输入)
标签: python json pandas data-science