首页  >  文章  >  后端开发  >  Pandas 如何处理嵌套的 JSON 对象?

Pandas 如何处理嵌套的 JSON 对象?

Barbara Streisand
Barbara Streisand原创
2024-10-24 18:28:05581浏览

How Do Pandas Handle Nested JSON Objects?

如何使用 Pandas 处理嵌套 JSON 对象

在本文中,我们将探索如何使用 pandas 有效地操作具有嵌套对象的 JSON 数据结构。

嵌套 JSON 结构

考虑以下 JSON 结构:

<code class="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": ""
        }
    ]
}</code>

使用 json_normalize 进行扁平化

pandas 的 json_normalize 函数允许我们将嵌套对象扁平化为表格格式:

<code class="python">import json

with open('myJson.json') as data_file:    
    data = json.load(data_file)  

df = pd.json_normalize(data, 'locations', ['date', 'number', 'name'], 
                    record_prefix='locations_')</code>

这会生成一个 DataFrame,其中包含嵌套“位置”对象中每个键的列。

无需扁平化的分组串联

如果不需要扁平化,您可以使用 Pandas 的分组和串联功能:

<code class="python">df = pd.read_json("myJson.json")
df.locations = pd.DataFrame(df.locations.values.tolist())['name']
df = df.groupby(['date', 'name', 'number'])['locations'].apply(','.join).reset_index()</code>

此方法将“位置”值串联为“日期”、“名称”和“数字”的每个唯一组合的逗号分隔字符串.

结论

通过利用 pandas 的 json_normalize 和分组/串联功能,我们可以有效地处理嵌套的 JSON 结构,从而允许我们以表格格式提取和操作数据。

以上是Pandas 如何处理嵌套的 JSON 对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn