将IBM情感分析JSON转为pandas表格时报ValueError如何解决
错误原因
你调用pd.read_json()直接解析情感响应JSON时报错,核心原因是你拿到的JSON结构层级不匹配:targets对应的值是包含字典的列表,document对应的值是单个独立字典,两者结构、长度都不一致,pandas默认的解析逻辑无法对齐这两类数据生成规范表格,因此抛出了「混合字典与非序列可能导致顺序歧义」的错误。
另外你不需要把response['sentiment']先序列化为JSON字符串再用pandas读取,直接操作原始的Python字典对象更简单高效。
解决方法
直接从原始响应中提取你需要的字段,手动构造符合要求的DataFrame即可:
# 提取情感数据 sentiment_data = response["sentiment"] # 提取文档级得分 doc_score = sentiment_data["document"]["score"] # 遍历所有target构造行数据(适配单个/多个target的场景) table_rows = [] for target_item in sentiment_data["targets"]: table_rows.append({ "Text": target_item["text"], "text score": target_item["score"], "Document score": doc_score }) # 转成pandas DataFrame result_df = pd.DataFrame(table_rows) # 查看结果 print(result_df)
运行上述代码即可得到你需要的Text | text score | Document score格式的表格,如果需要保留情感标签,只要在构造字典时额外加"text label": target_item["label"]、"Document label": sentiment_data["document"]["label"]字段即可。
内容的提问来源于stack exchange,提问作者pericles Andon
相关产品推荐
相关产品推荐

