You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将无表头嵌套JSON读入Pandas并设置自定义表头

处理无表头嵌套JSON转Pandas DataFrame

这种没有明确表头的嵌套JSON确实容易让人卡壳,毕竟常规的pd.read_json直接用的话根本达不到你要的结构。我来给你两种解决方案,分别对应拆分多行和合并郊区的需求~

首先先明确下你提到的JSON结构示例(方便对应代码):

{
  "2023-10-01": {
    "Main St": ["Downtown", "West End"],
    "Oak Ave": ["Riverdale"]
  },
  "2023-10-02": {
    "Maple Rd": ["North Park", "South Hill"]
  }
}

方案1:将多郊区拆分为单独行(推荐,符合常规数据分析结构)

这个方案会把每个郊区都生成一行数据,完美匹配你要的date、street、suburb三列结构:

import pandas as pd
import json

# 读取本地JSON文件
with open('your_file.json', 'r') as f:
    json_data = json.load(f)

# 逐层遍历嵌套结构,整理成DataFrame需要的行数据
formatted_rows = []
for date_str, street_dict in json_data.items():
    for street_name, suburb_list in street_dict.items():
        # 遍历每个郊区,生成单独的记录
        for suburb in suburb_list:
            formatted_rows.append({
                'date': date_str,
                'street': street_name,
                'suburb': suburb
            })

# 转换为DataFrame
df = pd.DataFrame(formatted_rows)
print(df)

运行后输出的DataFrame结构:

datestreetsuburb
2023-10-01Main StDowntown
2023-10-01Main StWest End
2023-10-01Oak AveRiverdale
2023-10-02Maple RdNorth Park
2023-10-02Maple RdSouth Hill

如果你的JSON数据量很大,用列表推导式会更高效,等价的写法:

formatted_rows = [
    {'date': d, 'street': s, 'suburb': sb}
    for d, streets in json_data.items()
    for s, subs in streets.items()
    for sb in subs
]
df = pd.DataFrame(formatted_rows)

方案2:将多郊区合并为单个单元格

如果你的需求是把同一条街道的郊区合并成一个字符串(比如用逗号分隔),可以用这个方案:

import pandas as pd
import json

with open('your_file.json', 'r') as f:
    json_data = json.load(f)

formatted_rows = []
for date_str, street_dict in json_data.items():
    for street_name, suburb_list in street_dict.items():
        # 把郊区列表合并为逗号分隔的字符串
        merged_suburbs = ', '.join(suburb_list)
        formatted_rows.append({
            'date': date_str,
            'street': street_name,
            'suburb': merged_suburbs
        })

df = pd.DataFrame(formatted_rows)
print(df)

运行后输出的DataFrame结构:

datestreetsuburb
2023-10-01Main StDowntown, West End
2023-10-01Oak AveRiverdale
2023-10-02Maple RdNorth Park, South Hill

小提示

  • 记得把代码里的your_file.json替换成你实际的文件路径
  • 如果你的JSON数据不是本地文件,而是API返回的字符串,直接用json.loads(response_text)解析就行,不用文件读取那一步

内容的提问来源于stack exchange,提问作者AshHimself

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:21:17