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

如何将DataFrame字典列中的message值提取为新列?

从嵌套字典列提取值并新增DataFrame列

很简单,这里有两种实用的方法帮你完成需求,直接看代码和解释就行:

方法1:使用apply()遍历行(直观易懂)

这种方法逻辑清晰,适合小数据集或者需要自定义复杂逻辑的场景:

import pandas as pd

# 先构造你的示例DataFrame(如果已有可跳过这部分)
sample_data = {
    'City': ['Paris', 'Tokyo'],
    'error': [
        {'error': {'userInfo': {}, 'code': 'sdf', 'requestId': 'dsfsdf', 'domain': 'sdgsdgf', 'message': "Hello", 'staticCode': '0'}},
        {'error': {'userInfo': {}, 'code': 'xyz', 'requestId': 'abc789', 'domain': 'test', 'message': "Hi there", 'staticCode': '0'}}
    ]
}
df = pd.DataFrame(sample_data)

# 新增message列,提取嵌套字典中的值
df['message'] = df['error'].apply(lambda row: row['error']['message'])

解释:apply()会对error列的每一个字典元素执行lambda函数,先获取外层的error键对应的内层字典,再从中取出message的值。

方法2:使用str.get()链式访问(高效矢量化)

如果你的数据集规模较大,这种方法性能更好,因为它利用了pandas的矢量化操作,比apply()更快:

# 同样的DataFrame,用str.get()提取
df['message'] = df['error'].str.get('error').str.get('message')

解释:str.get()是pandas针对字典类型Series提供的方法,能直接提取指定键的值,链式调用就能逐层穿透嵌套字典,最终拿到message的内容。

验证结果

执行完上面任意一种方法后,打印df就能看到新增的message列:

print(df)

输出示例:

City                                              error   message
0   Paris  {'error': {'userInfo': {}, 'code': 'sdf', 'req...     Hello
1   Tokyo  {'error': {'userInfo': {}, 'code': 'xyz', 'req...  Hi there

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:12:36