首页  >  文章  >  后端开发  >  如何在 Pandas 中将嵌套 JSON 对象作为 DataFrame 进行管理?

如何在 Pandas 中将嵌套 JSON 对象作为 DataFrame 进行管理?

DDD
DDD原创
2024-10-24 14:07:02874浏览

How to Manage Nested JSON Objects as a DataFrame in Pandas?

使用嵌套对象读取嵌套 JSON 作为 Pandas DataFrame

处理包含嵌套对象的 JSON 数据时,在 Python 中高效地操作它至关重要。 Pandas 提供了一个强大的工具来实现此目的 - json_normalize。

将数组扩展为列

要将位置数组扩展为单独的列,请使用 json_normalize,如下所示:

<code class="python">import json
import pandas as pd

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

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

print(df)</code>

这将创建一个具有扩展列的数据框:

  locations_arrTime locations_arrTimeDiffMin locations_depTime  \
0                                                        06:32   
1             06:37                        1             06:40   
2             08:24                        1                     

  locations_depTimeDiffMin           locations_name locations_platform  \
0                        0  Spital am Pyhrn Bahnhof                  2   
1                        0  Windischgarsten Bahnhof                  2   
2                                    Linz/Donau Hbf               1A-B   

  locations_stationIdx locations_track number    name        date  
0                    0          R 3932         R 3932  01.10.2016  
1                    1                         R 3932  01.10.2016  
2                   22                         R 3932  01.10.2016 

处理多个 JSON 对象

对于包含多个对象的 JSON 文件,该方法取决于所需的数据结构。

保留单个列

要保留单个列(日期、数字、名称、位置),请使用以下命令:

<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()

print(df)</code>

这将对数据进行分组并连接位置:

        date    name number                                          locations
0  2016-01-10  R 3932         Spital am Pyhrn Bahnhof,Windischgarsten Bahnho...

扁平化数据结构

如果您更喜欢扁平化数据结构,您可以使用 json_normalize 并进行以下设置:

<code class="python">df = pd.read_json('myJson.json', orient='records', convert_dates=['date'])

print(df)</code>

这将在单个表中输出数据:

  number    date                   name  ... locations.arrTimeDiffMin locations.depTimeDiffMin locations.platform
0             R 3932  2016-01-10  R 3932  ...                       0                         0                  2
1             R 3932  2016-01-10  R 3932  ...                       1                         0                  2
2             R 3932  2016-01-10  R 3932  ...                       1                         -                  1A-B

以上是如何在 Pandas 中将嵌套 JSON 对象作为 DataFrame 进行管理?的详细内容。更多信息请关注PHP中文网其他相关文章!

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