如何从Pandas DataFrame的字典格式列中提取值生成新列
Pandas提取JSON列字段解决方案
原有代码错误原因
你使用的explode方法仅适用于列表类型的列展开,且DataFrame中不存在"orderNum"列,因此无法提取到目标值。
实现方法
情况1:Details列为JSON字符串类型
绝大多数场景下存储的是字符串格式的JSON,需要先将其转为Python字典再取值:
import json import pandas as pd # 提取orderNum值存入目标列 df['OrderNumber'] = df['Details'].apply(lambda x: json.loads(x)['orderNum'])
情况2:Details列为Python字典类型
如果该列已经经过字典转换,可以直接用pandas的str访问器取值,执行效率更高:
df['OrderNumber'] = df['Details'].str['orderNum']
完整测试示例
import pandas as pd import json # 构造和需求一致的测试数据 df = pd.DataFrame({ 'ActionTime': ['1/2/2021 17:21', '1/2/2021 20:16', '1/3/2021 8:38'], 'Details': ['{"orderNum":123456}', '{"orderNum":467899}', '{"orderNum":753951}'] }) df['OrderNumber'] = df['Details'].apply(lambda x: json.loads(x)['orderNum']) print(df)
运行后输出的结果和预期结构完全一致。
内容的提问来源于stack exchange,提问作者Slavisha84
相关产品推荐
相关产品推荐

