如何从Pandas DataFrame的JSON列提取指定字段生成新DataFrame
你不需要关心JSON内部的键顺序,JSON本身是无序键值对结构,直接通过键名取值就能拿到正确结果,不受排列顺序影响,以下是具体实现方案:
方案1:逐行转字典后提取(易理解)
import pandas as pd import json # 假设你的原始DataFrame变量名为df # 第一步:将Values列的JSON字符串转为Python字典 df["values_dict"] = df["Values"].apply(json.loads) # 第二步:按字段名提取对应值,和JSON内部键顺序完全无关 # 用get方法可以避免部分JSON缺失目标键时报错,缺失时返回空值 df["Old"] = df["values_dict"].apply(lambda x: x.get("Old Value")) df["New"] = df["values_dict"].apply(lambda x: x.get("New Value")) # 第三步:生成目标格式的DataFrame result_df = df[["ID", "Date", "Old", "New"]]
方案2:用json_normalize一步解析(更简洁)
import pandas as pd import json # 直接解析Values列的JSON字段,合并到原DataFrame df = df.join(pd.json_normalize(df["Values"].apply(json.loads))) # 重命名字段后提取需要的列即可 result_df = df.rename(columns={"Old Value": "Old", "New Value": "New"})[["ID", "Date", "Old", "New"]]
运行效果
针对你给出的示例数据,运行后得到的result_df输出如下:
| ID | Date | Old | New |
|---|---|---|---|
| 1234 | 2021-01-01 | Segment 1 | Segment 2 |
内容的提问来源于stack exchange,提问作者Mike Sarnoski
相关产品推荐
相关产品推荐

