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

在Pandas中将含字典列表的列拆分为多列的实现方法

Pandas拆分含字典列表的列为多列并保留原关联数据

问题场景

现有DataFrame结构如下:

id | name | servicePlans
------------------------
1  | xyz  | [{'servicePlanId': '1',
             'servicePlanName': 'A',
             'provisioningStatus': 'X',
             'appliesTo': 'User'},

             {'servicePlanId': '2',
             'servicePlanName': 'B',
             'provisioningStatus': 'Y',
             'appliesTo': 'User'},

             {'servicePlanId': '3',
             'servicePlanName': 'C',
             'provisioningStatus': 'Z',
             'appliesTo': 'User'}]
...

需要将servicePlans列中的字典列表拆分为多列,同时保留id和name的关联,转换为如下结构:

id | name | servicePlanId | servicePlanName | provisioningStatus | appliesTo
-----------------------------------------------------------------------------
1  | xyz  |      1        |       A         |         X          |   User
1  | xyz  |      2        |       B         |         Y          |   User
1  | xyz  |      3        |       C         |         Z          |   User

问题分析

你之前的代码仅单独处理了servicePlans列,丢失了id和name的关联数据,因此只返回了拆分后的四列。

解决方案

先对整个DataFrame执行explode操作保留原列,再拆分字典列并合并:

# 1. 对servicePlans列做展开,保留id和name列
df_exploded = df.explode('servicePlans')

# 2. 将servicePlans列的字典转换为结构化DataFrame
service_plans_df = pd.DataFrame(df_exploded['servicePlans'].tolist())

# 3. 合并原列与拆分后的列
result = pd.concat([df_exploded[['id', 'name']], service_plans_df], axis=1)

# 可选:按servicePlanId去重(根据需求选择)
result = result.drop_duplicates(subset=['servicePlanId'])

执行后即可得到包含所有目标列的DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:27:05