如何提取Pandas DataFrame指定列中字典元素的value字段值
问题原因
- 你调用
df.replace()结合正则处理的方案完全不匹配当前场景:当前col1列存储的是字典类型对象,正则仅能作用于字符串内容,无法识别、处理字典结构,所以不会生效。 - 你所写的正则表达式
r'{^\d\.}+'本身逻辑也存在问题,既无法匹配字典结构,也不满足提取value对应值的需求。
实现方案
方案1:使用str.get()(最简洁推荐)
Pandas的Series内置的str访问器支持直接对字典按键取值,代码如下:
import pandas as pd test = {'col1':[{'value': '001'},{'value': False},{'value': 'abc'}]} df = pd.DataFrame(test) df['col1'] = df['col1'].str.get('value')
运行后即可得到你需要的结果,且如果某行不存在value键会自动返回NaN,不会触发报错。
方案2:使用apply()遍历处理
如果你需要更灵活的自定义处理逻辑,可以用apply结合匿名函数实现:
# 基础写法,和str.get效果一致 df['col1'] = df['col1'].apply(lambda x: x.get('value')) # 兼容非字典元素的增强写法 df['col1'] = df['col1'].apply(lambda x: x.get('value') if isinstance(x, dict) else x)
内容的提问来源于stack exchange,提问作者Wiliam
相关产品推荐
相关产品推荐

