如何读取含JSON列的CSV数据并保留字典列表格式
解决CSV中JSON数组字段的解析问题
你的CSV数据里,col3字段是被双引号包裹且内部带转义字符的JSON数组字符串,直接用pd.read_csv()读取会把它识别成普通字符串,没法得到预期的字典列表格式。下面是两种可行的解决办法:
方法一:读取后批量解析字段
import pandas as pd import json # 读取CSV,skipinitialspace=True跳过逗号后的空格,避免字段带冗余空格 df = pd.read_csv("your_file.csv", skipinitialspace=True) # 解析col3:先去掉首尾双引号,再转成字典列表 df["col3"] = df["col3"].apply(lambda x: json.loads(x.strip('"')) if pd.notna(x) else x)
方法二:读取时直接指定转换器
import pandas as pd import json def parse_col3(s): if pd.isna(s): return s # 去除首尾双引号后解析JSON return json.loads(s.strip('"')) # 读取时给col3指定转换函数 df = pd.read_csv("your_file.csv", skipinitialspace=True, converters={"col3": parse_col3})
特殊情况处理
如果col3里的JSON是非标准格式(比如键名没加双引号,像col33:1),json.loads会解析失败,这时候可以用ast.literal_eval替代:
import pandas as pd import ast def parse_col3(s): if pd.isna(s): return s return ast.literal_eval(s.strip('"')) df = pd.read_csv("your_file.csv", skipinitialspace=True, converters={"col3": parse_col3})
执行完上述代码后,col3字段就能被正确解析成字典列表格式,符合你的预期。
内容的提问来源于stack exchange,提问作者JSM
相关产品推荐
相关产品推荐

