如何将Pandas中JSON字典格式的字符串列解析为独立新列?
解决JSON字符串列解析为多列的问题
你的问题核心在于存储的字符串是单引号格式的伪JSON,而标准JSON要求双引号,直接用json_normalize或tolist无法识别。下面是具体的解决步骤:
步骤1:清洗并解析字符串
先把单引号替换为双引号,再用json.loads转成Python可识别的列表/字典结构:
import pandas as pd import json def parse_user_inputs(input_str): try: # 替换单引号为双引号,适配JSON标准格式 cleaned_str = input_str.replace("'", '"') # 解析为Python列表 input_data = json.loads(cleaned_str) # 返回列表中的第一个字典(你的示例里每个单元格都是单元素列表) return input_data[0] if input_data else {} except Exception as e: # 处理解析失败的情况,返回空字典避免中断 print(f"解析错误: {e}") return {}
步骤2:解析为多列并合并
将解析后的字典序列规范化为DataFrame,再和原数据合并:
# 假设你的数据集叫df,对userInputs列应用解析函数 parsed_series = df['userInputs'].apply(parse_user_inputs) # 将字典序列展开为多列 normalized_df = pd.json_normalize(parsed_series) # 合并原数据与新列(删除原userInputs列) final_df = pd.concat([df.drop('userInputs', axis=1), normalized_df], axis=1)
效果说明
运行后,final_df会新增userID、milesRequested、WhPerMile等列,对应的值会自动填充到每一行。
内容的提问来源于stack exchange,提问作者ast
相关产品推荐
相关产品推荐

