使用Pandas解析CSV中的JSON格式字段失败,如何将数据转换为指定结构?
解决思路:用Pandas解析嵌套的类JSON字符串列
你的需求是把包含嵌套配置信息的CSV转换成展开列的格式,这个问题的核心是解析configuration列里的类JSON字符串——因为它用的是单引号(不是标准JSON的双引号),直接用pd.json_normalize会报错,我给你一套可行的步骤:
步骤1:导入必要的库
import pandas as pd import ast
ast.literal_eval可以安全地把单引号包裹的字符串转换成Python字典,比json.loads更适合处理这种非标准JSON格式。
步骤2:读取原始CSV
df = pd.read_csv('my.csv')
这一步会把configuration列读成字符串类型。
步骤3:解析configuration列的字符串为字典
# 用ast.literal_eval解析每个字符串为字典 df['configuration'] = df['configuration'].apply(ast.literal_eval)
这一步之后,configuration列的每一行都会变成一个Python字典,比如{'dBInstanceIdentifier': 'grafanadb', ...}。
步骤4:展开字典列并合并到原DataFrame
# 把字典列展开成单独的DataFrame config_df = pd.json_normalize(df['configuration']) # 合并原DataFrame的accountid列和展开后的配置列 result_df = pd.concat([df['accountid'], config_df], axis=1)
步骤5:筛选需要的列并保存结果
# 选择你需要的列(注意大小写匹配,比如原数据里是dBInstanceClass,要和目标列名对应好) result_df = result_df[['accountid', 'dBInstanceIdentifier', 'dBInstanceClass', 'engine']] # 保存成CSV,不需要索引 result_df.to_csv('result.csv', index=False)
可能的问题说明
如果之前直接用pd.json_normalize报错,大概率是因为configuration列的字符串是单引号格式,标准JSON要求双引号,所以json.loads无法解析,但ast.literal_eval可以完美处理这种Python风格的字典字符串。
测试一下这个代码,应该就能得到你想要的result.csv了。
内容的提问来源于stack exchange,提问作者WorkoutBuddy
相关产品推荐
相关产品推荐

