如何用Pandas或其他工具提取CSV日志raw列中timestamp等字段至新列?
使用Pandas提取CSV中JSON格式列的字段
当然可以用Pandas轻松实现这个需求,以下是具体步骤和代码:
读取CSV日志文件
先导入所需库并读取你的CSV文件:import pandas as pd import json # 用于安全解析JSON字符串 # 读取CSV文件,替换成你的日志文件实际路径 df = pd.read_csv('your_log_file.csv')解析JSON格式的
raw列
利用pd.json_normalize函数可以直接解析JSON字符串,还能自动展开嵌套的JSON结构(比如示例中的dns字段):# 将raw列的JSON字符串转为JSON对象,再展开成结构化列 parsed_df = pd.json_normalize(df['raw'].apply(json.loads))这里用
json.loads比eval更安全,能避免恶意代码执行的风险。提取目标字段并保存
从解析后的DataFrame中挑选你需要的列,比如timestamp、src_ip、proto,甚至嵌套的dns.rrname等,然后保存为新文件:# 选择需要的字段,可根据实际需求调整 target_cols = parsed_df[['timestamp', 'src_ip', 'proto', 'dest_ip', 'dns.rrname', 'dns.rrtype']] # 保存为新的CSV文件 target_cols.to_csv('extracted_logs.csv', index=False) # 或者保存到Excel的新工作表 with pd.ExcelWriter('extracted_logs.xlsx') as writer: target_cols.to_excel(writer, sheet_name='Extracted_Fields', index=False)
处理完成后,你需要的所有字段都会成为单独的列,方便后续的数据分析或查看。
内容的提问来源于stack exchange,提问作者Johncyh
相关产品推荐
相关产品推荐

