Eu encontrei essa pergunta enquanto tentava fazer um dicionário de três colunas de um dataframe do pandas. No meu caso, o dataframe tem colunas A, B e C (digamos que A e B são as coordenadas geográficas de longitude e latitude e C a região do país / estado / etc, que é mais ou menos o caso).
Eu queria um dicionário com cada par de valores A, B (chave de dicionário) correspondendo ao valor de C (valor de dicionário) na linha correspondente (cada par de valores A, B é garantido como único devido à filtragem anterior, mas é possível ter o mesmo valor de C para diferentes pares de valores de A, B neste contexto), então eu fiz:
mydict = dict(zip(zip(df['A'],df['B']), df['C']))
Usar pandas to_dict () também funciona:
mydict = df.set_index(['A','B']).to_dict(orient='dict')['C']
(nenhuma das colunas A ou B foi usada como índice antes de executar a linha de criação do dicionário)
Ambas as abordagens são rápidas (menos de um segundo em um dataframe com 85k linhas, laptop dual-core rápido de 5 anos de idade).
Os motivos pelos quais estou postando isso:
- para quem precisa desse tipo de solução
- se alguém conhece uma solução de execução mais rápida (por exemplo, para milhões de linhas), gostaria de receber uma resposta.