【发布时间】:2020-12-24 09:37:38
【问题描述】:
index print_type_solid print_type_floral cluster
A 10 10 2
B 20 20 2
A 10 10 3
B 20 20 3
C 25 30 3
有人可以帮我将上述数据框转换为以下嵌套字典,其中集群成为主键,print_type_x 作为键,然后是下面预期输出中所示的值?
{
"2" :{
"print_type_solid" : {
"A": 10,
"B": 20
},
"print_type_floral" : {
"A": 10,
"B": 20
}
},
"3" :{
"print_type_solid" : {
"A": 10,
"B": 20,
"C": 25,
},
"print_type_floral" : {
"A": 10,
"B": 20,
"C": 30,
}
}
}
我试过这个:
from collections import defaultdict
d = defaultdict()
d2={}
for k1, s in dct.items():
for k2, v in s.items():
for k3, r in v.items():
d.setdefault(k3, {})[k2] = r
d2[k1]=d
但我明白了:
{
"2" :{
"print_type_solid" : {
"A": 10,
"B": 20,
"C": 25
},
"print_type_floral" : {
"A": 10,
"B": 20,
"C": 30
}
},
"3" :{
"print_type_solid" : {
"A": 10,
"B": 20,
"C": 25,
},
"print_type_floral" : {
"A": 10,
"B": 20,
"C": 30,
}
}
}
这是错误的,因为我在集群 2 的字典中也得到了 C。
【问题讨论】:
-
你想做什么?
-
为什么要使用 defaultdict 和 setdefault?为什么不是 defaultdict(dict)?你了解 defaultdicts 是如何工作的吗?
标签: python pandas dataframe dictionary nested