Converter Pandas Dataframe em Dicionário
-
Pandas DataFrame para dicionário usando a função
to_dict()
-
Pandas DataFrame para dicionário com valores como lista ou
Series
- Pandas DataFrame para lista de dicionários
- Pandas Dataframe a Dicionário por Linhas
-
DataFrame para Dicionário com uma Coluna como
chave
-
Pandas DataFrame para dicionário usando as funções
dict()
ezip()
Este tutorial irá introduzir como converter uma Pandas DataFrame para um dicionário com os elementos da coluna de índice como chave e os elementos correspondentes em outras colunas como o valor. Utilizaremos a seguinte DataFrame no artigo.
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
print(df)
Resultado:
Name Age Course
0 Jay 16 BBA
1 Jack 19 BTech
2 Mark 18 BSc
Pandas DataFrame para dicionário usando a função to_dict()
Pandas to_dict()
a função converte um DataFrame para um dicionário. Os parâmetros determinam o formato do dicionário e como os pares de valores-chave estão associados. Um exemplo elementar de conversão de uma DataFrame para Dicionário utilizando to_dict()
é mostrado abaixo:
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
d1 = df.to_dict()
print(d1)
Resultado:
{'Name': {0: 'Jay', 1: 'Jack', 2: 'Mark'}, 'Age': {0: 16, 1: 19, 2: 18}, 'Course': {0: 'BBA', 1: 'BTech', 2: 'BSc'}}
Como se pode ver na saída, os nomes das colunas são convertidos em chaves e cada registo como o valor, com índice como a sua chave.
Pandas DataFrame para dicionário com valores como lista ou Series
Podemos passar parâmetros como list
, records
, series
, index
, split
, e dict
a to_dict()
função para alterar o formato do dicionário final. Por exemplo, quando passamos list
e series
como parâmetro, temos os nomes das colunas como chaves, mas os pares de valores são convertidos numa lista e numa série de linhas, respectivamente. O exemplo seguinte irá demonstrar isto.
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
d_list = df.to_dict("list")
print(d_list)
d_series = df.to_dict("series")
print(d_series)
Resultado:
{'Name': ['Jay', 'Jack', 'Mark'], 'Age': [16, 19, 18], 'Course': ['BBA', 'BTech', 'BSc']}
{'Name': 0 Jay
1 Jack
2 Mark
Name: Name, dtype: object, 'Age': 0 16
1 19
2 18
Name: Age, dtype: int64, 'Course': 0 BBA
1 BTech
2 BSc
Name: Course, dtype: object}
Pandas DataFrame para lista de dicionários
Também podemos ter cada fila como um dicionário separado a passar records
à função. O resultado final é uma lista com cada fila como um dicionário. Por exemplo,
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
d_records = df.to_dict("records")
print(d_records)
Resultado:
[{'Name': 'Jay', 'Age': 16, 'Course': 'BBA'}, {'Name': 'Jack', 'Age': 19, 'Course': 'BTech'}, {'Name': 'Mark', 'Age': 18, 'Course': 'BSc'}]
Pandas Dataframe a Dicionário por Linhas
Mas para muitos casos, podemos não querer os nomes das colunas como as chaves do dicionário. Para tais situações, podemos passar index
para fazer o índice DataFrame como chaves. O seguinte trecho de código irá mostrá-lo.
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
d_index = df.to_dict("index")
print(d_index)
Resultado:
{0: {'Name': 'Jay', 'Age': 16, 'Course': 'BBA'}, 1: {'Name': 'Jack', 'Age': 19, 'Course': 'BTech'}, 2: {'Name': 'Mark', 'Age': 18, 'Course': 'BSc'}}
DataFrame para Dicionário com uma Coluna como chave
Mas e se preferirmos utilizar os elementos de uma coluna como as chaves e os elementos de outras colunas como os valores? É possível, bastando fazer a coluna necessária como índice da DataFrame e tomar a sua transposição utilizando a função .T()
.
Exemplo:
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
d_names = df.set_index("Name").T.to_dict("list")
print(d_names)
Resultado:
{'Jay': [16, 'BBA'], 'Jack': [19, 'BTech'], 'Mark': [18, 'BSc']}
Pandas DataFrame para dicionário usando as funções dict()
e zip()
A função Python dict()
também pode converter a Pandas DataFrame num dicionário. Devemos também utilizar a função zip()
com as colunas individuais como argumentos para criar o iterador paralelo. Depois, a função zip()
produzirá todos os valores numa linha em cada iteração.
import pandas as pd
df = pd.DataFrame(
[["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
columns=["Name", "Age", "Course"],
)
d = dict([(i, [a, b]) for i, a, b in zip(df["Name"], df["Age"], df["Course"])])
print(d)
Resultado:
{'Jay': [16, 'BBA'], 'Jack': [19, 'BTech'], 'Mark': [18, 'BSc']}
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedInArtigo relacionado - Pandas DataFrame
- Como obter os cabeçalhos da coluna Pandas DataFrame como uma lista
- Como eliminar a coluna Pandas DataFrame
- Como Converter a Coluna DataFrame para DataTempo em Pandas
- Como Converter um Flutuador em um Inteiro em Pandas DataFrame
- Como Classificar Pandas DataFrame pelos Valores de uma Coluna
- Como Obter o Agregado de Pandas Group-By e Sum