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

Pandas根据列内字典列表拆分生成新行与新列实现方法

Pandas 列表字典列拆分+字段提取实现方案

核心思路

无需编写多层循环,借助Pandas内置的explode方法先把存储字典列表的列拆分为单元素单行,再从拆分后的字典中提取目标字段即可,代码简洁且运行效率高。

完整实现代码

首先导入Pandas并构造示例原始数据(可直接替换为实际数据源):

import pandas as pd

# 原始DataFrame示例
df = pd.DataFrame({
    'Name': ['N001', 'N002', 'N003'],
    'Component': [
        [{'component':'numpy', 'version':'1.24.0'}, {'component':'pandas', 'version':'2.1.0'}],
        [{'component':'scikit-learn', 'version':'1.3.0'}],
        [{'component':'matplotlib', 'version':'3.7.2'}, {'component':'seaborn', 'version':'0.12.2'}, {'component':'plotly', 'version':'5.16.1'}]
    ]
})

第一步:按Component列的列表长度拆分多行

# 拆分列表为独立行,ignore_index重置行索引避免重复
df_processed = df.explode('Component', ignore_index=True)

第二步:提取字典内字段生成新列

# 常规数据量用apply写法即可
df_processed['ComponentName'] = df_processed['Component'].apply(lambda x: x['component'])
df_processed['ComponentVersion'] = df_processed['Component'].apply(lambda x: x['version'])

# 十万行以上大数据量可替换为性能更好的批量提取写法
# comp_df = df_processed['Component'].apply(pd.Series)
# df_processed['ComponentName'] = comp_df['component']
# df_processed['ComponentVersion'] = comp_df['version']

如果不需要保留原存储字典的Component列,追加一行删除即可:

df_processed = df_processed.drop(columns=['Component'])

输出效果说明

处理后每一行唯一对应一个组件:

  • 原Name列的值会自动匹配到所属的所有组件行,不会丢失编号关联关系
  • ComponentName列存储当前行对应的组件名
  • ComponentVersion列存储当前行对应的组件版本号
    和需求要求的预期输出结构完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:06:23