web-dev-qa-db-fra.com

Convertir pandas DataFrame en liste de listes

J'ai un bloc de données pandas) comme ceci:

admit   gpa  gre  rank   
0  3.61  380     3  
1  3.67  660     3  
1  3.19  640     4  
0  2.93  520     4

Maintenant, je veux obtenir une liste de lignes dans pandas comme:

[[0,3.61,380,3], [1,3.67,660,3], [1,3.19,640,4], [0,2.93,520,4]]   

Comment puis-je le faire?

61
user2806761

Il existe une méthode intégrée qui serait également la plus rapide, appelant tolist sur le .values np array:

df.values.tolist()

[[0.0, 3.61, 380.0, 3.0],
 [1.0, 3.67, 660.0, 3.0],
 [1.0, 3.19, 640.0, 4.0],
 [0.0, 2.93, 520.0, 4.0]]
104
EdChum

vous pouvez le faire comme ça:

map(list, df.values)
27
Roman Pekar

EDIT: as_matrix Est obsolète depuis la version 0.23.0

Vous pouvez utiliser le construit values ou to_numpy (option recommandée) sur le dataframe:

In [8]:
df.to_numpy()

Out[8]:
array([[  0.9,   7. ,   5.2, ...,  13.3,  13.5,   8.9],
   [  0.9,   7. ,   5.2, ...,  13.3,  13.5,   8.9],
   [  0.8,   6.1,   5.4, ...,  15.9,  14.4,   8.6],
   ..., 
   [  0.2,   1.3,   2.3, ...,  16.1,  16.1,  10.8],
   [  0.2,   1.3,   2.4, ...,  16.5,  15.9,  11.4],
   [  0.2,   1.3,   2.4, ...,  16.5,  15.9,  11.4]])

Si vous voulez explicitement des listes et non un tableau numpy, ajoutez .tolist():

df.to_numpy().tolist()
10
Daan