如何将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
相关产品推荐
相关产品推荐

