我有关于汽车的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,但我不知道如何在第3层(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"]}}发布于 2020-01-26 12:26:54
首先通过按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"]}}https://stackoverflow.com/questions/59918296
复制相似问题