我有关于汽车的 carsML
数据框:
+-------+-------------+--------------------+
| Manuf | Model | Type |
+-------+-------------+--------------------+
| VW | VWModel 1 | VWModel 1 Type 1 |
| VW | VWModel 2 | VWModel 2 Type 1 |
| VW | VWModel 2 | VWModel 2 Type 2 |
| Opel | OpelModel 1 | OpelModel 1 Type 1 |
| Opel | OpelModel 2 | OpelModel 2 Type 1 |
| Opel | OpelModel 2 | OpelModel 2 Type 2 |
+-------+-------------+--------------------+
我需要将唯一值导出到 JSON。我知道如何获得 2 个级别:
j = carsML.groupby('Manuf ')['Model'].unique().to_json()
这为我提供了 Manufacturers
和 Models
的漂亮 JSON,但我不知道如何在第三层扩展它(Types
) .
最终的 JSON 应如下所示:
{"Opel":
{"OpelModel 1": ["OpelModel 1 Type 1"]},
["OpelModel 2":["OpelModel 2 Type 1","OpelModel 2 Type 1"]],
"VW":
{"VWModel 1":["VWModel 1 Type 1"]},
{"VWModel 2":["VWModel 2 Type 1","VWModel 2 Type 2"]}}
最佳答案
首先通过按 2 列分组来创建 MultiIndex Series
,然后在字典理解中创建嵌套字典:
s = carsML.groupby(['Manuf','Model'])['Type'].unique().apply(list)
d = {l: s.xs(l).to_dict() for l in s.index.levels[0]}
对于 json
使用嵌套字典中的 json.dumps
:
import json
j = json.dumps({l: s.xs(l).to_dict() for l in s.index.levels[0]})
<小时/>
print (j)
{"Opel": {"OpelModel 1": ["OpelModel 1 Type 1"],
"OpelModel 2": ["OpelModel 2 Type 1", "OpelModel 2 Type 2"]},
"VW": {"VWModel 1": ["VWModel 1 Type 1"],
"VWModel 2": ["VWModel 2 Type 1", "VWModel 2 Type 2"]}}
关于python - Pandas - 将 3 列分组导出到 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59918296/