Obtenir la liste des listes dans Pandas DataFrame

177

Je lis le contenu d'une feuille de calcul en pandas. DataNitro a une méthode qui renvoie une sélection rectangulaire de cellules sous forme de liste de listes. Alors

table = Cell("A1").table

donne

table = [['Heading1', 'Heading2'], [1 , 2], [3, 4]]

headers = table.pop(0) # gives the headers as list and leaves data

Je suis occupé à écrire du code pour traduire cela, mais je suppose que c'est une utilisation si simple qu'il doit y avoir une méthode pour le faire. Je ne peux pas le trouver dans la documentation. Des pointeurs vers la méthode qui simplifierait cela?

Joop
la source

Réponses:

266

Appelez pd.DataFramedirectement le constructeur:

df = pd.DataFrame(table, columns=headers)
df

   Heading1  Heading2
0         1         2
1         3         4
EdChum
la source
84

Avec l'approche expliquée par EdChum ci-dessus, les valeurs de la liste sont affichées sous forme de lignes. Pour afficher les valeurs des listes sous forme de colonnes dans DataFrame, utilisez simplement transpose () comme suit:

table = [[1 , 2], [3, 4]]
df = DataFrame(table)
df = df.transpose()
df.columns = ['Heading1', 'Heading2']

La sortie est alors:

      Heading1  Heading2
0         1        3
1         2        4
Shoresh
la source
6

Même sans popla liste, nous pouvons faire avecset_index

pd.DataFrame(table).T.set_index(0).T
Out[11]: 
0 Heading1 Heading2
1        1        2
2        3        4

Mettre à jour from_records

table = [['Heading1', 'Heading2'], [1 , 2], [3, 4]]

pd.DataFrame.from_records(table[1:],columns=table[0])
Out[58]: 
   Heading1  Heading2
0         1         2
1         3         4
YOBEN_S
la source