将pandas中的行转换为列表

use*_*761 63 python dataframe pandas

我有一个像这样的pandas数据框:

admit   gpa  gre  rank   
0  3.61  380     3  
1  3.67  660     3  
1  3.19  640     4  
0  2.93  520     4
Run Code Online (Sandbox Code Playgroud)

现在我想获得pandas中的行列表,如:

[[0,3.61,380,3], [1,3.67,660,3], [1,3.19,640,4], [0,2.93,520,4]]   
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

EdC*_*ica 108

你可以使用tolist以下方法实现:

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]]
Run Code Online (Sandbox Code Playgroud)

或者你也可以使用.values:

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]]
Run Code Online (Sandbox Code Playgroud)

更新

看着这再次有一个内置的方法,这将是最快的方法,也叫后tolist的上.valuesNP阵列:

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]]
Run Code Online (Sandbox Code Playgroud)


Rom*_*kar 27

你可以这样做:

map(list, df.values)
Run Code Online (Sandbox Code Playgroud)

  • 我会在此答案中添加一些警告。在Python 3中,`map()`返回一个迭代器,所以答案变成`list(map(map(list,df.values)))`,由于存在较短的拼写“ df.values.tolist()”,这是过大的。(另一件事要注意的是,从熊猫0.24.0(2018年1月)开始,他们建议将df.values拼写为df.to_numpy(),所以我想它变成了df.to_numpy()。tolist()有利于它确实明确指出df.values提供了一个未包装的numpy对象,应该在numpy文档中查找.tolist()。 (2认同)

Daa*_*aan 10

您可以as_matrix在数据帧上使用内置方法(参考: 1):

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]])
Run Code Online (Sandbox Code Playgroud)