如何使用pandas将嵌套字典结构的数据转换为标准DataFrame格式
嵌套字典转DataFrame解决方案
直接调用pd.DataFrame(data)不符合预期的原因是:该方法无法自动展开多层嵌套的字典结构,会将嵌套字典整体作为单个列的取值存储。
你可以使用pandas内置的json_normalize()方法完成转换,该方法专门用于处理嵌套格式的字典/JSON数据,会自动将所有层级的字段展开为二维表格的独立列。
完整实现代码
import pandas as pd # 你的嵌套字典数据 data = {'id': 255719, 'display_name': 'Off Broadway Apartments', 'access_right': {'status': 'OWNED', 'api_enabled': True}, 'creation_time': '2021-04-26T15:53:29+00:00', 'status': {'value': 'OFFLINE', 'last_change': '2021-07-10T17:26:50+00:00'}, 'licence': {'id': 74213, 'code': '23AF-15A8-0514-2E4B-04DE-5C19-A574-B20B', 'bound_mac_address': '00:11:32:C2:FE:6A', 'activation_time': '2021-04-26T15:53:29+00:00', 'type': 'SUBSCRIPTION'}, 'timezone': 'America/Chicago', 'version': {'agent': '3.7.0-b001', 'package': '2.5.1-0022'}, 'location': {'latitude': '41.4126', 'longitude': '-99.6345'}} # 展开嵌套结构生成DataFrame df = pd.json_normalize(data)
可选调整
默认生成的列名会使用父键.子键的格式命名(例如access_right.status、licence.id),如果需要自定义分隔符,可以添加sep参数指定,比如用下划线分隔:
df = pd.json_normalize(data, sep='_')
转换后得到的DataFrame为1行16列的二维结构,所有字段均为标量值,无嵌套结构,可直接用于后续数据处理。
内容的提问来源于stack exchange,提问作者sdh2000
相关产品推荐
相关产品推荐

