我很好奇如何使用pandas读取以下结构的嵌套json:
{
"number": "",
"date": "01.10.2016",
"name": "R 3932",
"locations": [
{
"depTimeDiffMin": "0",
"name": "Spital am Pyhrn Bahnhof",
"arrTime": "",
"depTime": "06:32",
"platform": "2",
"stationIdx": "0",
"arrTimeDiffMin": "",
"track": "R 3932"
},
{
"depTimeDiffMin": "0",
"name": "Windischgarsten Bahnhof",
"arrTime": "06:37",
"depTime": "06:40",
"platform": "2",
"stationIdx": "1",
"arrTimeDiffMin": "1",
"track": ""
},
{
"depTimeDiffMin": "",
"name": "Linz/Donau Hbf",
"arrTime": "08:24",
"depTime": "",
"platform": "1A-B",
"stationIdx": "22",
"arrTimeDiffMin": "1",
"track": ""
}
]
}
字符串
这里的数组保持为json,我更希望它扩展为列。
pd.read_json("/myJson.json", orient='records')
型
编辑
谢谢你的第一个答案。我应该改进我的问题:数组中嵌套属性的扁平化不是强制性的。只需要[A,B,C]连接df.locations 'name']就可以了。
我的文件包含多个JSON对象(每行1个)我想保留数字,日期,名称和位置列。但是,我需要加入位置。
allLocations = ""
isFirst = True
for location in result.locations:
if isFirst:
isFirst = False
allLocations = location['name']
else:
allLocations += "; " + location['name']
allLocations
型
我这里的方法似乎不是有效的/Pandas风格。
4条答案
按热度按时间t5zmwmid1#
可以使用
json_normalize
:字符串
编辑:
您可以使用
read_json
通过DataFrame
构造函数解析name
,最后使用groupby
应用join
:型
y4ekin9u2#
另一个选择,如果有人发现这一点,因为我是通过一个笔记本工作。
字符串
快乐编码
sq1bmfud3#
pandas.json_normalize
的一个可能的替代方案是通过只从嵌套字典中提取选定的键和值来构建自己的嵌套框架。这样做的主要原因是因为json_normalize对于非常大的json文件会变慢(并且可能不总是产生你想要的输出)。所以,这里有一种使用
glom
来扁平化pandas中嵌套字典的替代方法。目的是从嵌套字典中提取选定的键和值,并将它们保存在pandas嵌套框架(:下面是一个分步指南:https://medium.com/@enrico.alemani/flatten-nested-dictionaries-in-pandas-using-glom-7948345c88f5
字符串
doinxwow4#
我有一个多行JSON,每行有一个JSON对象<$'a':'b','scope':'eid':123213}}<$'a':'d ',' scope ':' eid ':1343213}}
没有逗号分隔。每行都是独立的
我使用以下逻辑读取嵌套结构
threshold = pd.read_json(r”/content/data.json”,lines=True)
字符串