我之前从未使用过Pandas,而且我正在尝试从csv数据到json进行非常简单的转换。
我的csv数据格式如下:
Category | Type | Parameter Name | Parameter Value
---------|------|----------------|----------------
Windows | W1 | Width | 900
Windows | W1 | Height | 900
Windows | W2 | Width | 1200
Windows | W2 | Height | 500
Doors | D1 | Width | 900
Doors | D1 | Height | 2100
Doors | D2 | Width | 820
Doors | D2 | Height | 2100
我想制作类似的东西:
{
"Windows": {
"W1": {
"Height": 900,
"Width": 900
},
"W2": {
"Height": 500,
"Width": 1200
},
},
"Doors: {
"D1": {
"Height": 2100,
"Width": 900
},
"D2": {
"Height": 2100,
"Width": 500
},
},
}
有人可以帮忙吗?
答案 0 :(得分:0)
没有时间做更多事情。希望这有帮助
s = df.set_index(df.columns[:-1].tolist())[df.columns[-1]]
def redict(s):
if s.index.nlevels == 1:
return s.to_dict()
else:
return {k: redict(g.xs(k)) for k, g in s.groupby(level=0)}
redict(s)
{'Doors': {'D1': {'Height': 2100, 'Width': 900},
'D2': {'Height': 2100, 'Width': 820}},
'Windows': {'W1': {'Height': 900, 'Width': 900},
'W2': {'Height': 500, 'Width': 1200}}}
稍作修改后,我们会获得json
s = df.set_index(df.columns[:-1].tolist())[df.columns[-1]]
def redict(s):
if s.index.nlevels == 1:
return s.astype(str).to_dict()
else:
return {k: redict(g.xs(k)) for k, g in s.groupby(level=0)}
json.dumps(redict(s))
'{"Doors": {"D1": {"Width": "900", "Height": "2100"}, "D2": {"Width": "820", "Height": "2100"}}, "Windows": {"W1": {"Width": "900", "Height": "900"}, "W2": {"Width": "1200", "Height": "500"}}}'