You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:从JSON列表列提取字段生成单独新列

提取JSON列表列中的指定字段到单独列

假设你用Python的Pandas处理数据,以下是直接可落地的实现方法:

1. 准备环境与数据预处理

首先导入所需库,并将原始的JSON字符串列转为可操作的Python列表:

import pandas as pd
import json

# 模拟你的原始数据(json_col为存储JSON列表的目标列)
data = {
    "json_col": [
        '''[{
"$id": "2",
"Name": "IDMAWH-L853902$",
"Mail": "ENTA.AD.COM",
"Type": "account"
}, {
"$id": "3",
"Address": "::ffff:10.192.20.125",
"Type": "ad"
}]''',
        '''[{
    "$id": "2",
    "MailboxPrimaryAddress": "bw165@gmail.com",
    "Upn": "bw165@gmail.com",
    "AadId": "936b3d90-b86c-4dba-812d-8f6025c1e379",
    "RiskLevel": "None",
    "Type": "mailbox",
    "Urn": "urn:UserEntity:1ccd1b06205baec05fe19e55e0d602c6",
    "Source": "OATP",
    "FirstSeen": "0001-01-01T00:00:00"
}, {
    "$id": "3",
    "Recipient": "bw165@gmail.com",
    "Urls": ["https://towardsdatascience.com/cleaning-and-extracting-json-from-pandas-dataframes-f0c15f93cb38"]}]'''
    ]
}

df = pd.DataFrame(data)
# 将字符串格式的JSON转为Python列表
df["json_col"] = df["json_col"].apply(json.loads)

2. 编写字段提取函数

遍历每个JSON列表中的元素,精准提取目标字段:

def extract_target_fields(json_list):
    account = None
    ip = None
    urls = None
    
    for item in json_list:
        # 提取account(取Type为account的Name字段,可按需替换为Mail)
        if item.get("Type") == "account":
            account = item.get("Name")
        # 提取IP,自动去除::ffff:前缀
        elif item.get("Type") == "ad":
            raw_addr = item.get("Address")
            if raw_addr:
                ip = raw_addr.replace("::ffff:", "")
        # 提取Urls列表
        if "Urls" in item:
            urls = item.get("Urls")
    
    return pd.Series([account, ip, urls], index=["Account", "IP", "Urls"])

3. 生成单独列

将函数应用到目标列,直接新增三个提取后的字段:

df[["Account", "IP", "Urls"]] = df["json_col"].apply(extract_target_fields)

最终效果

处理后的数据表会新增三列:

  • 第一行:Account为IDMAWH-L853902$,IP为10.192.20.125,Urls为None
  • 第二行:Account为None,IP为None,Urls为["https://towardsdatascience.com/cleaning-and-extracting-json-from-pandas-dataframes-f0c15f93cb38"]

如果需要调整提取规则(比如Account要同时包含Name和Mail),直接修改函数中对应赋值语句即可。

内容的提问来源于stack exchange,提问作者Lopa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 18:30:41