You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

拆分DataFrame JSON列触发SyntaxError报错的排查与解决

你的代码里final = df('column_config').reset_index(drop=True)这一行用了圆括号访问DataFrame列,正确写法应该是方括号df['column_config'],这是触发SyntaxError的直接原因。另外原代码逻辑也有问题:column_config里的内容是包含多个字典的列表,强行用dict(eval(x))转成单个字典会报错,根本无法得到目标结果。

正确实现步骤

  1. 安全解析JSON格式字符串:用ast.literal_eval替代eval(避免执行恶意代码的风险),将字符串转为Python列表对象:
import pandas as pd
import ast

# 示例DataFrame
df = pd.DataFrame({
    'company_id': [1, 2],
    'column_config': [
        '[{"username":"Rob","type":"Admin","Id":"f3234ds","prefixType":""},{"username":"Lew","type":"Finance","Id":"d32423d","prefix":"Mr"}]',
        '[{"username":"Bob","type":"Admin","Id":"t43234s","prefixType":""}]'
    ]
})

# 解析字符串为Python列表
df['column_config'] = df['column_config'].apply(ast.literal_eval)
  1. 展开列表行:将每个列表中的字典单独拆分为一行,保留对应的company_id:
df_exploded = df.explode('column_config', ignore_index=True)
  1. 拆分字典列为多列:用pd.json_normalize将字典列展开为普通列,再与原company_id列合并:
result = pd.concat([df_exploded[['company_id']], pd.json_normalize(df_exploded['column_config'])], axis=1)
  1. 整理结果:删除不需要的prefixType列,空值填充为空字符串:
result = result.drop(columns=['prefixType']).fillna('')

最终得到的result即为期望输出:

company_id username     type        Id prefix
0           1      Rob    Admin  f3234ds       
1           1      Lew  Finance  d32423d     Mr
2           2      Bob    Admin  t43234s       

内容的提问来源于stack exchange,提问作者JackJack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:31:02