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

如何将CSV中AuditData列的JSON数据转换为带统一表头的DataFrame?

提取CSV中JSON格式日志并生成统一表头DataFrame的解决方案

核心思路

通过解析CSV中AuditData列的JSON字符串,将其展开为结构化的表格数据,再与原CSV的其他列合并,最终得到表头统一的DataFrame。

完整实现步骤

1. 导入依赖库

import pandas as pd
import json

2. 读取原始CSV文件

先把整个CSV加载到DataFrame中:

df = pd.read_csv('你的日志文件.csv')

3. 解析AuditData列的JSON数据

编写解析函数处理JSON字符串,再用pd.json_normalize将字典列表展开为标准表格:

# 处理JSON解析异常,避免单个错误行中断整个流程
def parse_audit_json(json_str):
    try:
        return json.loads(json_str)
    except json.JSONDecodeError:
        return {}  # 解析失败返回空字典,后续自动填充NaN

# 对AuditData列批量解析
audit_dicts = df['AuditData'].apply(parse_audit_json)

# 展开字典为统一表头的DataFrame
audit_df = pd.json_normalize(audit_dicts)

4. 合并原数据与解析后的JSON数据

如果需要保留原CSV的其他字段(比如时间戳、用户ID),直接拼接两个DataFrame即可:

final_df = pd.concat([df.drop('AuditData', axis=1), audit_df], axis=1)

5. 处理JSON字段不一致的情况

如果不同行的JSON包含不同字段,pd.json_normalize会自动为所有出现过的字段创建列,缺失字段的行填充NaN,保证表头完全统一。

完整示例代码

import pandas as pd
import json

# 读取CSV
df = pd.read_csv('audit_logs.csv')

# 解析AuditData列的JSON
def parse_json(s):
    try:
        return json.loads(s)
    except:
        return {}

audit_data = df['AuditData'].apply(parse_json)
audit_df = pd.json_normalize(audit_data)

# 合并得到最终结果
final_df = pd.concat([df.drop('AuditData', axis=1), audit_df], axis=1)

# 查看输出
print(final_df.head())

问题根源说明

你之前的代码之所以会每行重复列名,大概率是逐行解析后每次创建小DataFrame再拼接,没有用批量展开的方式。pd.json_normalize会直接将所有JSON字典统一展开为一个标准表格,从根源避免了重复列名的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:05:20