如何用Python解析CSV中JSON格式列并生成新列?
从CSV的JSON格式列中提取字段的解决方案
问题说明
你的CSV数据中device和geoNetwork列存储了带转义双引号的JSON字符串,需要提取browser、browserVersion、continent等字段生成新列。以下是基于Python pandas的高效处理方案:
步骤1:安装依赖(若未安装)
pip install pandas
步骤2:代码实现
import pandas as pd import json # 读取CSV文件,自动处理转义双引号 df = pd.read_csv('your_data.csv') # 解析device列的JSON,提取browser和browserVersion device_data = df['device'].apply(json.loads) device_df = pd.json_normalize(device_data)[['browser', 'browserVersion']] # 解析geoNetwork列的JSON,提取continent geo_data = df['geoNetwork'].apply(json.loads) geo_df = pd.json_normalize(geo_data)[['continent']] # 合并原数据与提取的新列 final_df = pd.concat([df, device_df, geo_df], axis=1) # 查看结果 print(final_df[['date', 'browser', 'browserVersion', 'continent']])
异常处理说明
如果部分JSON格式不合法,可在apply时加入错误捕获:
def safe_json_loads(s): try: return json.loads(s) except json.JSONDecodeError: return {} device_data = df['device'].apply(safe_json_loads) geo_data = df['geoNetwork'].apply(safe_json_loads)
注意事项
- 替换代码中的
your_data.csv为实际文件路径 - 若CSV中存在换行的JSON(如示例第二条数据的device字段),
json.loads仍能正确解析,无需额外处理
内容的提问来源于stack exchange,提问作者Marcin
相关产品推荐
相关产品推荐

