我在这里有一个棘手的问题,关于将JSON字符串转换为Python数据字典用于分析Pandas。我已阅读了其他一些问题,但没有一个对我的案例起作用。将JSON转换为Python Dict与SQLAlchemy导入的Postgresql数据
以前,我只是简单地使用CSV(和Pandas的read_csv函数)来执行我的分析,但现在我已经开始直接从PostgreSQL中提取数据。
我没有问题,使用SQLAlchemy连接到我的引擎并运行我的查询。我的整个脚本与我从CSV中获取数据时的运行方式相同。也就是说,直到它转到我试图将其中一列(即下面的示例文本中的'config'列)从JSON转换为Python字典的部分。将其转换为字典的最终目标是能够计算“config”列中“选项”字段下的响应数量。
df = pd.read_sql_query('SELECT questions.id, config from questions ', engine)
df = df['config'].apply(json.loads)
df = pd.DataFrame(df.tolist())
df['num_options'] = np.array([len(row) for row in df.options])
当我运行这个,我得到错误“TypeError:预期的字符串或缓冲区”。我尝试将'config'列中的数据转换为来自对象的字符串,但这并没有做到这一点(我得到了另一个错误,例如“ValueError:Expecting property name ...”)。
如果有帮助,这里有一个在“配置”柱剪断数据从一个细胞(代码应返回的结果“6”这个剪断,因为有6个选项):
{"graph_by":"series","options":["Strongbow Case Card/Price Card","Strongbow Case Stacker","Strongbow Pole Topper","Strongbow Base wrap","Other Strongbow POS","None"]}
我猜测是SQLAlchemy在将数据从数据库中提取出来时会对JSON字符串做些奇怪的事情?当我只是从数据库中提取CSV时不会发生什么?
对不起,我在回复您的延迟,但这种完美工作,非常感谢分享! –