我有一个列IssuerId
和Sedol
的熊猫数据框。在某些情况下,IssuerId
相同,但是Sedol
始终不同。
我想创建一个字典或多级索引来汇总这些内容,以便我可以轻松遍历它们。例如,我目前有:
IssuerID Sedol
1 1
1 2
2 3
3 4
我想以某种方式创建:
[{1: [1,2]},{2: 3},{3:4}]
最佳答案
如果您执行groupBy
+ apply(list)
然后调用to_dict
,则会得到:
d = df.groupby("IssuerID")["Sedol"].apply(list).to_dict()
print(d)
#{1: [1, 2], 2: [3], 3: [4]}
现在,只需重新格式化
d
即可获得所需的输出。如果您想要字典,请使用dict理解:
new_dict = {k: v if len(v) > 1 else v[0] for k, v in d.items()}
print(new_dict)
#{1: [1, 2], 2: 3, 3: 4}
如果您想要词典列表,请使用列表理解:
new_list = [{k: v if len(v) > 1 else v[0]} for k, v in d.items()]
print(new_list )
#[{1: [1, 2]}, {2: 3}, {3: 4}]
关于python - 如何创建唯一 key 对词典的字典?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54154841/