Esta pode ser uma pergunta simples, mas não consigo descobrir como fazer isso. Digamos que eu tenho duas variáveis da seguinte maneira.
a = 2
b = 3
Eu quero construir um DataFrame a partir disso:
df2 = pd.DataFrame({'A':a,'B':b})
Isso gera um erro:
ValueError: se estiver usando todos os valores escalares, você deve passar um índice
Eu tentei isso também:
df2 = (pd.DataFrame({'a':a,'b':b})).reset_index()
Isso dá a mesma mensagem de erro.
index=0
, mas que pode levar ao mau uso acidental (pensando que um único dicionário de alguma forma pode criar uma trama de dados de multi-linha)Você também pode usar o
pd.DataFrame.from_records
que é mais conveniente quando você já tem o dicionário em mãos:Você também pode definir o índice, se desejar, por:
fonte
Você precisa criar uma série de pandas primeiro. O segundo passo é converter a série de pandas em dataframe de pandas.
Você pode até fornecer um nome de coluna.
fonte
pd.Series(data).to_frame('ColumnName')
é mais curto, embora este equivalente é talvez mais direto:pd.DataFrame.from_dict(data, orient='index', columns=['ColumnName'])
Você pode tentar incluir seu dicionário na lista
my_dict = {'A':1,'B':2}
pd.DataFrame([my_dict])
fonte
Talvez o Series forneça todas as funções necessárias:
O DataFrame pode ser considerado uma coleção de Séries, portanto, você pode:
Concatene várias séries em um quadro de dados (conforme descrito aqui )
Adicione uma variável Series ao quadro de dados existente ( exemplo aqui )
fonte
Você precisa fornecer iterables como os valores para as colunas DataFrame do Pandas:
fonte
Eu tive o mesmo problema com matrizes numpy e a solução é achatá-las:
fonte
Se você pretende converter um dicionário de escalares, é necessário incluir um índice:
Embora o índice não seja necessário para um dicionário de listas, a mesma ideia pode ser expandida para um dicionário de listas:
Obviamente, para o dicionário de listas, você pode criar o quadro de dados sem um índice:
fonte
Você poderia tentar:
Na documentação do argumento 'orientar': Se as chaves do ditado passado devem ser as colunas do DataFrame resultante, passe 'colunas' (padrão). Caso contrário, se as chaves forem linhas, passe 'index'.
fonte
code
palavras muito importantes para ser ousado , onces menor importantes Itálico também usar listas, se necessárioPandas mágicos no trabalho. Toda a lógica está fora.
A mensagem de erro
"ValueError: If using all scalar values, you must pass an index"
Diz que você deve passar um índice.Isso não significa necessariamente que a aprovação de um índice faça os pandas fazerem o que você quer que ele faça
Quando você passa um índice, os pandas tratam as chaves do dicionário como nomes de colunas e os valores como o que a coluna deve conter para cada um dos valores no índice.
Passando um índice maior:
Um índice geralmente é gerado automaticamente por um quadro de dados quando nenhum é fornecido. No entanto, os pandas não sabe quantas linhas de
2
e3
você quer. No entanto, você pode ser mais explícito sobre issoO índice padrão é baseado em 0.
Eu recomendaria sempre passar um dicionário de listas para o construtor de quadro de dados ao criar quadros de dados. É mais fácil ler para outros desenvolvedores. O Pandas tem muitas advertências, não faça com que outros desenvolvedores tenham especialistas em todos eles para ler seu código.
fonte
a entrada não precisa ser uma lista de registros - também pode ser um dicionário único:
O que parece ser equivalente a:
fonte
Isso ocorre porque um DataFrame possui duas dimensões intuitivas - as colunas e as linhas.
Você está especificando apenas as colunas usando as chaves do dicionário.
Se você deseja especificar apenas dados unidimensionais, use uma Série!
fonte
Converter dicionário em quadro de dados
Atribua novo nome à coluna
fonte
Se você possui um dicionário, pode transformá-lo em um quadro de dados do pandas com a seguinte linha de código:
fonte
Basta passar o dict em uma lista:
fonte