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

Pandas DataFrame中字典数据未拆分至独立列的问题排查

问题分析与解决方案

看起来你在把JSON数据转成Pandas DataFrame时踩了两个关键小坑,我来帮你拆解并修正:

1. 先修正代码里的明显错误

首先看你操作里的两个核心问题:

  • 你写了movedDict = dict['data'],这里dict是Python的内置类型,不是你解析后的字典变量!得先把JSON解析到一个自定义变量(比如data_dict),再从这个变量里取值。
  • 你直接对data对应的字典(里面只有trafficRegistrationPoints一个键,值是数组)调用pd.DataFrame.from_dict,这会把整个数组当成一列的内容,而不是把数组里的每个字典拆成独立行和列。

正确的操作步骤

下面是完整的可运行代码:

import json
import pandas as pd

# 先处理原字符串里的HTML转义引号("),替换成标准双引号
datasett = ''' { "data": { "trafficRegistrationPoints": [ { "id": "99100B1687283", "name": "Menstad sykkeltellepunkt", "location": { "coordinates": { "latLon": { "lat": 59.173876, "lon": 9.641772 } } } } ] } } '''
datasett_clean = datasett.replace('"', '"')

# 解析JSON为Python字典
data_dict = json.loads(datasett_clean)

# 提取trafficRegistrationPoints数组(每个元素是一个监测点的完整数据)
traffic_points_list = data_dict['data']['trafficRegistrationPoints']

# 把数组转成DataFrame,每个字典的键会自动成为列
df = pd.DataFrame(traffic_points_list)
print(df)

2. 展开嵌套的location数据(可选)

如果想把location里的经纬度也拆成独立列,不用手动提取,可以用pd.json_normalize一键扁平化嵌套结构:

df_normalized = pd.json_normalize(traffic_points_list)
print(df_normalized)

这样会得到id、name、location.coordinates.latLon.lat、location.coordinates.latLon.lon这些清晰的独立列,更方便后续分析。

错误原因总结

  • 变量名误用:你误用了Python内置的dict类型去取值,这是语法错误,必须用解析后的自定义字典变量(比如data_dict)。
  • 数据结构理解偏差:data对应的字典里,trafficRegistrationPoints是一个数组,你需要提取这个数组再转DataFrame;直接转外层字典会把数组当成单个列的值,自然不会拆分出独立列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 20:37:53