如何将Pandas DataFrame导出为指定格式的JSON文件?
将指定结构DataFrame导出为目标JSON格式
问题描述
现有如下结构的DataFrame:
| A | B | tc-01 | tc-02 |
|---|---|---|---|
| bapc | act | 1 | 1 |
| bapc | bp | 2 | 2 |
| bapc | ly | 3 | 3 |
| bapc | vsLy | 4 | 4 |
| bapc | bsBp | 5 | 5 |
| nsr | act | 6 | 6 |
| nsr | bp | 7 | 7 |
| nsr | ly | 8 | 8 |
| nsr | vsLy | 9 | 9 |
| nsr | bsBp | 10 | 10 |
需要将其导出为如下格式的JSON文件:
{ "expect": { "tc-01": { "bapc":{ "act":1, "bp":2, "ly":3, "vsLy":4, "bsBp":5 }, "nsr":{ "act":6, "bp":7, "ly":8, "vsLy":9, "bsBp":10 } }, "tc-02": { "bapc":{ "act":1, "bp":2, "ly":3, "vsLy":4, "bsBp":5 }, "nsr":{ "act":6, "bp":7, "ly":8, "vsLy":9, "bsBp":10 } } } }
解决方案
可以通过Pandas的索引操作和字典推导实现,具体代码如下:
import pandas as pd import json # 模拟目标DataFrame(实际使用时可替换为你的数据源) data = [ ["bapc", "act", 1, 1], ["bapc", "bp", 2, 2], ["bapc", "ly", 3, 3], ["bapc", "vsLy", 4, 4], ["bapc", "bsBp", 5, 5], ["nsr", "act", 6, 6], ["nsr", "bp", 7, 7], ["nsr", "ly", 8, 8], ["nsr", "vsLy", 9, 9], ["nsr", "bsBp", 10, 10] ] df = pd.DataFrame(data, columns=["A", "B", "tc-01", "tc-02"]) # 设置多层索引:以A、B列为层级索引 df.set_index(["A", "B"], inplace=True) # 构建目标JSON的嵌套结构 result = {"expect": {}} # 遍历每个测试列(tc-xx) for col in df.columns: # 将列数据转换为A→B→值的嵌套字典 col_dict = df[col].unstack(level=0).to_dict() corrected_dict = {a: {b: val for b, val in items.items()} for a, items in col_dict.items()} result["expect"][col] = corrected_dict # 导出为格式化的JSON文件 with open("output.json", "w") as f: json.dump(result, f, indent=4)
代码说明
- 设置多层索引:将
A和B列设为层级索引,为后续按分组转换字典做准备。 - 转换嵌套字典:对每个
tc-xx列,通过unstack展开层级索引,再调整字典嵌套顺序,得到A→B→数值的结构。 - 导出JSON:将构建好的嵌套结构写入JSON文件,
indent=4参数用于生成可读性更强的格式化输出。
内容的提问来源于stack exchange,提问作者Dung Pham
相关产品推荐
相关产品推荐

