Как создать словарь словарей уникальных пар ключей?

1

У меня есть панд dataframe с колоннами IssuerId и Sedol. IssuerId в некоторых случаях будет одинаковым, но Sedol всегда будет другим.

Я хотел бы создать словарь или многоуровневый индекс, который объединяет их так, чтобы я мог легко их пройти. Например, у меня сейчас есть:

IssuerID Sedol
1          1
1          2
2          3
3          4

И я хочу как-то создать:

[{1: [1,2]},{2: 3},{3:4}]
  • 0
    Ваш желаемый вывод не является допустимым объектом Python. Вы имели в виду [{1: [1,2]},{2: 3},{3:4}] ?
  • 0
    Да я имел ввиду список словарей, извинений
Теги:
pandas

2 ответа

1

Использование groupby

l=[{x:y.tolist()}for x , y in df.groupby('IssuerID')['Sedol']]
l
[{1: [1, 2]}, {2: [3]}, {3: [4]}]
1

Если вы выполните groupBy + apply(list) и затем to_dict, вы получите:

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}]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню