Eu tenho uma matriz Numpy que consiste em uma lista de listas, representando uma matriz bidimensional com rótulos de linha e nomes de colunas, como mostrado abaixo:
data = array([['','Col1','Col2'],['Row1',1,2],['Row2',3,4]])
Gostaria que o DataFrame resultante tivesse Row1 e Row2 como valores de índice e Col1, Col2 como valores de cabeçalho
Eu posso especificar o índice da seguinte maneira:
df = pd.DataFrame(data,index=data[:,0]),
no entanto, não tenho certeza de como atribuir melhor os cabeçalhos das colunas.
Respostas:
Você precisa especificar
data
,index
ecolumns
aoDataFrame
construtor, como em:editar : como no comentário @joris, pode ser necessário alterar acima
np.int_(data[1:,1:])
para ter o tipo de dados correto.fonte
DataFrame
não existe algum "atalho"? Essa é basicamente a maneira como oscsv
s são carregados - e podem ser gerenciados pelo tratamento padrão para muitos leitores de CSV. Uma estrutura análoga para df seria útil.Aqui está uma solução fácil de entender
fonte
Series
nomes. Isso não é escalável.Eu concordo com Joris; parece que você deveria fazer isso de maneira diferente, como com matrizes de registros numpy . Modificando a "opção 2" desta ótima resposta , você pode fazer o seguinte:
fonte
Isso pode ser feito simplesmente usando from_records of pandas DataFrame
fonte
data = array([['','Col1','Col2'],['Row1',1,2],['Row2',3,4]])
.fonte
Adicionando à resposta de @ behzad.nouri - podemos criar uma rotina auxiliar para lidar com esse cenário comum:
Vamos tentar:
fonte