Pandas: crie um dataframe a partir de um dict com comprimentos diferentes


Você pode usar a seguinte sintaxe básica para criar um DataFrame do pandas a partir de um dicionário cujas entradas têm comprimentos diferentes:

 import pandas as pd

df = pd. DataFrame (dict([(key, pd. Series (value)) for key, value in some_dict. items ()]))

Esta sintaxe converte uma lista de arrays de dicionário em uma lista de séries de pandas.

Isso nos permite criar um DataFrame do pandas e simplesmente preencher os valores NaN para garantir que cada coluna no DataFrame resultante tenha o mesmo comprimento.

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: Crie um DataFrame Pandas a partir de um dict com comprimentos diferentes

Suponha que temos o seguinte dicionário contendo entradas de diferentes comprimentos:

 #create dictionary whose entries have different lengths
some_dict = dict(A=[2, 5, 5, 7, 8], B=[9, 3], C=[4, 4, 2])

#view dictionary
print (some_dict)

{'A': [2, 5, 5, 7, 8], 'B': [9, 3], 'C': [4, 4, 2]}

Se tentarmos usar a função from_dict() para converter este dicionário em um DataFrame do pandas, receberemos um erro:

 import pandas as pd

#attempt to create pandas DataFrame from dictionary
df = pd. DataFrame . from_dict (some_dict)

ValueError : All arrays must be of the same length

Recebemos um erro informando que todos os arrays no dicionário devem ter o mesmo comprimento.

Para contornar esse erro, podemos usar a seguinte sintaxe para converter Dicionário em DataFrame:

 import pandas as pd

#create pandas DataFrame from dictionary
df = pd. DataFrame (dict([(key, pd. Series (value)) for key, value in some_dict. items ()]))

#view DataFrame
print (df)

   ABC
0 2 9.0 4.0
1 5 3.0 4.0
2 5 NaN 2.0
3 7 NaN NaN
4 8 NaN NaN

Observe que somos capazes de criar um DataFrame do pandas com sucesso e os valores NaN são preenchidos para garantir que cada coluna tenha o mesmo comprimento.

Se quiser substituir esses valores NaN por outros valores (como zero), você pode usar a função replace() da seguinte maneira:

 #replace all NaNs with zeros
df. replace (np. nan , 0, inplace= True )

#view updated DataFrame
print (df)

   ABC
0 2 9.0 4.0
1 5 3.0 4.0
2 5 0.0 2.0
3 7 0.0 0.0
4 8 0.0 0.0

Observe que cada valor NaN foi substituído por zero.

Sinta-se à vontade para usar a função replace() para substituir os valores NaN pelo valor que desejar.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns em pandas:

Pandas: Como converter um DataFrame em um dicionário
Pandas: como renomear colunas com um dicionário
Pandas: como preencher valores NaN usando um dicionário

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *