如何用Python将Pandas生成的混淆矩阵转换为JSON格式?
如何将Pandas混淆矩阵转换为正确的JSON格式?
看起来你已经成功生成了带清晰标签的混淆矩阵DataFrame,现在卡在了JSON转换这一步。你的现有代码思路是把矩阵包装成字典再转JSON,但方式有点绕,而且没选对正确的参数,我来给你几个简单靠谱的解决方案:
方法1:直接将DataFrame转为JSON(保留索引和列标签)
你可以直接对生成的confusionmatrix调用Pandas的to_json()方法,通过指定orient参数来控制JSON的结构。如果想保留你现有的行/列标签层级,用orient='index'最合适:
# 生成混淆矩阵(你的原有代码) confusionmatrix = pd.DataFrame( confusion_matrix(test["Churn"], predictions), columns=["Predicted False", "Predicted True"], index=["Actual False", "Actual True"] ) # 直接转换为格式化后的JSON confusion_json = confusionmatrix.to_json(orient='index', indent=4)
生成的JSON结构会完整保留你的标签逻辑:
{ "Actual False": { "Predicted False": 877, "Predicted True": 100 }, "Actual True": { "Predicted False": 183, "Predicted True": 179 } }
方法2:包装成你想要的嵌套结构(带confusionmatrix顶级键)
如果你希望最终的JSON外层有confusionmatrix这个顶级键,那可以先把DataFrame转成字典,再包装成指定结构,最后用json.dumps()格式化:
import json # 先将DataFrame转为字典(保留索引结构) matrix_dict = confusionmatrix.to_dict(orient='index') # 包装成目标嵌套结构 results = {'confusionmatrix': matrix_dict} # 转为格式化后的JSON final_json = json.dumps(results, indent=4)
这会得到你最初想要的结构:
{ "confusionmatrix": { "Actual False": { "Predicted False": 877, "Predicted True": 100 }, "Actual True": { "Predicted False": 183, "Predicted True": 179 } } }
为什么你的原有代码不行?
你之前尝试把DataFrame放到列表里再转Series,这种方式会让结构变得冗余,而且没有正确利用Pandas的内置方法来保留索引和列名。直接操作DataFrame本身的转换方法会更简洁可靠。
另外,orient参数还有其他选项可以满足不同需求:
orient='columns':会以列名为顶级键,行索引作为子键orient='split':会把数据、索引、列名分开存储,适合需要拆分结构的场景
内容的提问来源于stack exchange,提问作者sangeetha sivakumar
相关产品推荐
相关产品推荐

