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

如何提取DataFrame中列表内的指定值生成衍生列?

从包含字典的列表列中提取指定值生成衍生列

给定如下结构的DataFrame,其中Index列的每个元素是仅包含一个字典的列表:

import pandas as pd

# 构造示例数据
data = {
    'Index': [[{'cadence': '2022-12-07 14:02:28.012', 'id': 'RJASTD'}],
              [{'cadence': '2022-12-07 14:02:28.012', 'id': 'NMRFAS'}]],
    'Name': ['Sarah', 'James']
}
df = pd.DataFrame(data)

对应的DataFrame展示:

IndexName
[{'cadence': '2022-12-07 14:02:28.012', 'id': 'RJASTD'}]Sarah
[{'cadence': '2022-12-07 14:02:28.012', 'id': 'NMRFAS'}]James

需要提取每个列表中字典的id值,生成Index1列,最终目标效果如下:

Index1Name
RJASTDSarah
NMRFASJames

解决方案

你之前尝试的lstrip()、replace()属于字符串处理方法,但Index列的元素是列表对象,不是字符串,因此这类方法无效。可以通过以下两种方式直接操作列表和字典提取目标值:

方法1:使用apply配合lambda函数

对Index列的每个元素,先取列表的第一个元素(即目标字典),再提取字典中id键对应的值:

df['Index1'] = df['Index'].apply(lambda x: x[0]['id'])

方法2:使用Pandas的嵌套索引语法(更简洁)

利用Pandas对嵌套结构的支持,通过str索引直接访问列表和字典的层级元素:

df['Index1'] = df['Index'].str[0].str['id']

验证结果

执行上述任一代码后,筛选目标列查看效果:

print(df[['Index1', 'Name']])

输出结果:

Index1   Name
0  RJASTD  Sarah
1  NMRFAS  James

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:35:28