Python 如何创建唯一密钥对字典的字典?
我有一个pandas数据框,其中包含Python 如何创建唯一密钥对字典的字典?,python,pandas,Python,Pandas,我有一个pandas数据框,其中包含IssuerId和Sedol列。在某些情况下,IssuerIds将相同,但Sedol将始终不同 我想创建一个字典或多级索引来聚合这些内容,以便能够轻松地遍历它们。例如,我目前有: IssuerID Sedol 1 1 1 2 2 3 3 4 我想以某种方式创造: [{1: [1,2]},{2: 3},{3:4}] 如果您执行groupBy+apply(list),然后调用命令,您将得到
IssuerId
和Sedol
列。在某些情况下,IssuerId
s将相同,但Sedol
将始终不同
我想创建一个字典或多级索引来聚合这些内容,以便能够轻松地遍历它们。例如,我目前有:
IssuerID Sedol
1 1
1 2
2 3
3 4
我想以某种方式创造:
[{1: [1,2]},{2: 3},{3:4}]
如果您执行
groupBy
+apply(list)
,然后调用命令,您将得到:
d = df.groupby("IssuerID")["Sedol"].apply(list).to_dict()
print(d)
#{1: [1, 2], 2: [3], 3: [4]}
现在只需重新格式化d
,即可获得所需的输出
如果您想要一本词典,请使用听写理解:
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}]
如果需要词典列表,请使用列表:
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}]
使用groupby
l=[{x:y.tolist()}for x , y in df.groupby('IssuerID')['Sedol']]
l
[{1: [1, 2]}, {2: [3]}, {3: [4]}]
所需的输出不是有效的python对象。你是说[{1:[1,2]},{2:3},{3:4}]
?是的,我指的是字典列表,道歉