J'ai un tableau Numpy composé d'une liste de listes, représentant un tableau à deux dimensions avec des étiquettes de ligne et des noms de colonne comme indiqué ci-dessous:
data = array([['','Col1','Col2'],['Row1',1,2],['Row2',3,4]])
J'aimerais que le DataFrame résultant ait Row1 et Row2 comme valeurs d'index, et Col1, Col2 comme valeurs d'en-tête
Je peux spécifier l'index comme suit:
df = pd.DataFrame(data,index=data[:,0]),
cependant, je ne sais pas comment attribuer au mieux les en-têtes de colonne.
Réponses:
Vous devez spécifier
data
,index
etcolumns
auDataFrame
constructeur, comme dans:modifier : comme dans le commentaire @joris, vous devrez peut-être modifier ci-dessus
np.int_(data[1:,1:])
pour avoir le type de données correct.la source
DataFrame
pas de "raccourci"? C'est essentiellement la façon dont lescsv
s sont chargés - et peut être géré par la gestion par défaut de nombreux lecteurs csv. Une structure analogue pour les df serait utile.Voici une solution facile à comprendre
la source
Series
noms .. ce n'est pas évolutif.Je suis d'accord avec Joris; il semble que vous devriez faire cela différemment, comme avec les tableaux d'enregistrement numpy . En modifiant "l'option 2" de cette excellente réponse , vous pouvez le faire comme ceci:
la source
Cela peut être fait simplement en utilisant from_records of pandas DataFrame
la source
data = array([['','Col1','Col2'],['Row1',1,2],['Row2',3,4]])
.la source
Ajout à la réponse de @ behzad.nouri - nous pouvons créer une routine d'aide pour gérer ce scénario courant:
Essayons-le:
la source
Je pense que c'est une méthode simple et intuitive:
Retour:
Mais il y a des implications de performances détaillées ici:
Comment définir la valeur d'une colonne pandas comme liste
la source
Ce n'est pas si court, mais peut peut-être vous aider.
Création d'un tableau
Création d'un bloc de données
la source