我有一个列IssuerIdSedol的熊猫数据框。在某些情况下,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/

10-16 18:45