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

抓取JSON数据后如何将nilai列拆分为独立表格列?

解决nilai列拆分问题

你的nilai列存储的是嵌套字典结构,默认的pd.json_normalize未完全展开这部分数据,因此需要单独处理嵌套的字典内容。以下是修改后的完整代码,可将nilai中的值拆分为独立列:

import requests
import pandas as pd

# 抓取目标JSON数据
response = requests.get("https://ditppu.menlhk.go.id/apippu/gis/sebaranEnergi/tahun/2022/param//kategori//subkategori/")
data = response.json()

# 定义需要提取的行键(用列表替代元组,更易维护)
selected_row_keys = [
    '32', '14', '36', '35', '64', '74', '16', '31', '94', '12', 
    '33', '15', '11', '21', '72', '63', '52', '13', '73', '62', 
    '18', '19', '51', '65', '53', '61', '82', '71', '34', '91', 
    '81', '75', '17', '76'
]
# 提取指定行的数据
data1 = [data['rows'][key] for key in selected_row_keys]

# 1. 将外层数据转为DataFrame
df = pd.json_normalize(data1)
# 2. 把nilai列的嵌套字典拆分为独立列
nilai_df = pd.DataFrame(df['nilai'].tolist())
# 3. 合并原数据(移除nilai列)与拆分后的nilai数据
final_df = pd.concat([df.drop('nilai', axis=1), nilai_df], axis=1)

# 保存到Excel文件
final_df.to_excel('klhk.xlsx', index=False)

关键步骤说明

  • 用列表推导式替代手动拼接的元组,后续修改行键时更方便;
  • pd.DataFrame(df['nilai'].tolist()) 会把nilai列中的每个字典转换为一行数据,自动将字典的键作为新的列名;
  • pd.concat 实现原数据(已移除nilai列)与拆分后数据的横向合并,最终得到完全扁平化的表格。

如果希望保留nilai_前缀作为列名,也可以直接用pd.json_normalize(data1, sep='_'),无需额外拆分合并,生成的列名将是nilai_xxx格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:08:16