如何用Python Pandas清洗列错位的含嵌套JSON格式CSV文件
解决Pandas读取含转义JSON的CSV列错位问题
问题原因
CSV默认以逗号作为分隔符,但你的第三列是带转义字符的JSON字符串,若JSON内部包含未被正确包裹的逗号,Pandas会错误将其识别为列分隔符,导致后续列错位。
解决方案:用Python内置csv模块预处理
Python标准库的csv模块能正确识别带引号包裹的字段(即使字段内包含分隔符),先通过它读取数据再转成DataFrame即可解决问题。
步骤1:读取CSV并转成DataFrame
import csv import pandas as pd # 替换为你的CSV文件路径,编码根据实际情况调整(如gbk) file_path = "your_data.csv" data_rows = [] with open(file_path, "r", encoding="utf-8") as f: # csv.reader会自动处理带引号的字段,忽略字段内的分隔符 csv_reader = csv.reader(f) # 获取表头 column_names = next(csv_reader) # 读取所有数据行 for row in csv_reader: data_rows.append(row) # 转换为Pandas DataFrame df = pd.DataFrame(data_rows, columns=column_names)
步骤2:解析第三列的JSON字符串(可选)
如果需要将第三列的JSON字符串转为可操作的字典,可使用json模块:
import json # 假设第三列的列名是"json_content",也可用索引df.iloc[:, 2]定位 df["parsed_json"] = df["json_content"].apply(lambda x: json.loads(x))
注意事项
- 若CSV使用其他分隔符(如制表符
\t),需在csv.reader中指定delimiter="\t" - 确保JSON字符串的转义格式正确,若出现解析错误,可尝试先清理转义字符:
json.loads(x.replace('\\"', '"'))
内容的提问来源于stack exchange,提问作者devraj chauhan
相关产品推荐
相关产品推荐

