如何从DataFrame的字典类型列中提取值并创建新列?
提取DataFrame字典列中的指定值创建新列
场景说明
你有一个包含混合类型(数值、字典)的DataFrame,需要从字典类型的行中提取value字段的值,生成新列。原数据构造如下:
import pandas as pd data = [10,{'self': 'https://elia.atlassian.net/rest/api/3/customFieldOption/10200', 'value': 'IT-Sourced Changes 2022', 'id': '10200'},30] df = pd.DataFrame(data, columns=['Data'])
解决方案
方法1:自定义逻辑提取(灵活可控)
通过apply函数结合类型判断,精准处理混合类型数据:
# 提取字典中的'value'值,非字典行返回pd.NA(可替换为''或其他默认值) df['Extracted_Value'] = df['Data'].apply(lambda x: x.get('value') if isinstance(x, dict) else pd.NA)
- 逻辑说明:先用
isinstance(x, dict)判断每行数据是否为字典,是则调用x.get('value')获取指定键的值;否则返回pd.NA标记缺失值。
方法2:简洁版提取(适合常规场景)
利用pandas的str.get方法自动处理非字典类型,代码更简洁:
df['Extracted_Value'] = df['Data'].str.get('value')
- 逻辑说明:
str.get会对字典类型提取指定键的值,非字典类型直接返回NaN,无需额外判断。
最终效果
执行后DataFrame将新增Extracted_Value列,结果如下:
| Data | Extracted_Value |
|---|---|
| 10 | |
| {'self': 'https://elia.atlassian.net/...', 'value': 'IT-Sourced...'} | IT-Sourced Changes 2022 |
| 30 |
内容的提问来源于stack exchange,提问作者elia_Werner
相关产品推荐
相关产品推荐

