(或列表清单……我刚刚编辑过)
是否存在用于转换此类结构的现有python / pandas方法
food2 = {}
food2["apple"] = ["fruit","round"]
food2["bananna"] = ["fruit","yellow","long"]
food2["carrot"] = ["veg","orange","long"]
food2["raddish"] = ["veg","red"]
进入像这样的数据透视表?
+---------+-------+-----+-------+------+--------+--------+-----+
| | fruit | veg | round | long | yellow | orange | red |
+---------+-------+-----+-------+------+--------+--------+-----+
| apple | 1 | | 1 | | | | |
+---------+-------+-----+-------+------+--------+--------+-----+
| bananna | 1 | | | 1 | 1 | | |
+---------+-------+-----+-------+------+--------+--------+-----+
| carrot | | 1 | | 1 | | 1 | |
+---------+-------+-----+-------+------+--------+--------+-----+
| raddish | | 1 | | | | | 1 |
+---------+-------+-----+-------+------+--------+--------+-----+
天真的,我可能只是循环通过字典.我看到如何在每个内部列表上使用地图,但我不知道如何在字典上加入/堆叠它们.一旦我加入了它们,我就可以使用pandas.pivot_table了
for key in food2:
attrlist = food2[key]
onefruit_pairs = map(lambda x: [key,x],attrlist)
one_fruit_frame = pd.DataFrame(onefruit_pairs,columns=['fruit','attr'])
print(one_fruit_frame)
fruit attr
0 bananna fruit
1 bananna yellow
2 bananna long
fruit attr
0 carrot veg
1 carrot orange
2 carrot long
fruit attr
0 apple fruit
1 apple round
fruit attr
0 raddish veg
1 raddish red