Tengo una matriz Numpy que consiste en una lista de listas, que representa una matriz bidimensional con etiquetas de fila y nombres de columna como se muestra a continuación:
data = array([['','Col1','Col2'],['Row1',1,2],['Row2',3,4]])
Me gustaría que el DataFrame resultante tenga Row1 y Row2 como valores de índice, y Col1, Col2 como valores de encabezado
Puedo especificar el índice de la siguiente manera:
df = pd.DataFrame(data,index=data[:,0]),
Sin embargo, no estoy seguro de cómo asignar mejor los encabezados de columna.
Respuestas:
Debe especificar
data
,index
ycolumns
alDataFrame
constructor, como en:editar : como en el comentario de @joris, es posible que deba cambiar el anterior
np.int_(data[1:,1:])
para tener el tipo de datos correcto.fuente
DataFrame
¿no hay algún "atajo"? Esta es básicamente la forma en quecsv
se cargan los correos electrónicos , y se puede administrar mediante el manejo predeterminado para muchos lectores csv. Una estructura análoga para df sería útil.Aquí hay una solución fácil de entender.
fuente
Series
nombres ... eso no es escalable.Estoy de acuerdo con Joris; parece que debería estar haciendo esto de manera diferente, como con matrices de registros numpy . Modificando la "opción 2" de esta gran respuesta , podría hacerlo así:
fuente
Esto se puede hacer simplemente usando from_records of pandas DataFrame
fuente
data = array([['','Col1','Col2'],['Row1',1,2],['Row2',3,4]])
.fuente
Agregando a la respuesta de @ behzad.nouri, podemos crear una rutina auxiliar para manejar este escenario común:
Probémoslo:
fuente
Creo que este es un método simple e intuitivo:
devoluciones:
Pero hay implicaciones de rendimiento detalladas aquí:
Cómo establecer el valor de una columna de pandas como lista
fuente