Eu tenho um DataFrame com quatro colunas. Quero converter esse DataFrame em um dicionário python. Quero que os elementos da primeira coluna sejam keys
e os elementos de outras colunas na mesma linha values
.
Quadro de dados:
ID A B C
0 p 1 3 2
1 q 4 3 2
2 r 4 0 9
A saída deve ser assim:
Dicionário:
{'p': [1,3,2], 'q': [4,3,2], 'r': [4,0,9]}
python
pandas
dictionary
dataframe
Prince Bhatti
fonte
fonte
Dataframe.to_dict()
?Dataframe.to_dict()
faráA,B,C
as chaves em vez dep,q,r
Respostas:
O
to_dict()
método define os nomes das colunas como chaves de dicionário, para que você precise remodelar um pouco o DataFrame. Definir a coluna 'ID' como o índice e depois transpor o DataFrame é uma maneira de conseguir isso.to_dict()
também aceita um argumento 'orientar', necessário para gerar uma lista de valores para cada coluna. Caso contrário, um dicionário do formulário{index: value}
será retornado para cada coluna.Essas etapas podem ser executadas com a seguinte linha:
Caso seja necessário um formato de dicionário diferente, aqui estão exemplos dos possíveis argumentos orientais. Considere o seguinte DataFrame simples:
Então as opções são as seguintes.
dict - o padrão: nomes de colunas são chaves, valores são dicionários de índice: pares de dados
list - chaves são nomes de colunas, valores são listas de dados da coluna
series - como 'list', mas os valores são Series
split - divide colunas / dados / índice como chaves, com valores sendo nomes de colunas, valores de dados por linha e rótulos de índice, respectivamente
registros - cada linha se torna um dicionário em que chave é o nome da coluna e valor é os dados na célula
índice - como 'registros', mas um dicionário de dicionários com chaves como rótulos de índice (em vez de uma lista)
fonte
df.set_index('ID').T.to_dict('list')
Tente usar
Zip
Resultado:
fonte
Siga esses passos:
Suponha que seu quadro de dados seja o seguinte:
1. Use
set_index
para definirID
colunas como o índice do quadro de dados.2. Use o
orient=index
parâmetro para ter o índice como chaves do dicionário.Os resultados serão os seguintes:
3. Se você precisar ter cada amostra como uma lista, execute o código a seguir. Determinar a ordem das colunas
fonte
Se você não se importa que os valores do dicionário sejam tuplas, use ituplos:
fonte
um dicionário como:
ser necessário em um quadro de dados como:
maneira mais simples seria fazer:
snippet de trabalho abaixo:
fonte
Para meu uso (nomes de nós com posições xy), achei a resposta do @ user4179775 para a mais útil / intuitiva:
Termo aditivo
Mais tarde, voltei a esse problema para outro trabalho, mas relacionado. Aqui está uma abordagem que reflete mais de perto a [excelente] resposta aceita.
Converta o quadro de dados do Pandas em [lista], {dict}, {dict of {dict}}, ...
Por resposta aceita:
No meu caso, eu queria fazer a mesma coisa, mas com colunas selecionadas no quadro de dados do Pandas, então precisava dividir as colunas. Existem duas abordagens.
(consulte: Converter pandas em dicionário, definindo as colunas usadas nos valores-chave )
ou
que pode ser usado para criar um dicionário de dicionários
fonte
DataFrame.to_dict()
converte o DataFrame em dicionário.Exemplo
Consulte esta documentação para obter detalhes
fonte