我有一个像这样的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
现在我想要得到一个 Pandas 数据框中的行列表,例如:
[[0,3.61,380,3], [1,3.67,660,3], [1,3.19,640,4], [0,2.93,520,4]]
我该怎么做?
有一个内置的方法是最快的方法,它在.values
np数组上调用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]]
你可以这样做:
map(list, df.values)
编辑:自0.23.0版本起,as_matrix
已被弃用。
您可以在数据框架上使用内置的values
或to_numpy
方法(推荐选项):
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]])
如果您明确要求列表而不是NumPy数组,则添加.tolist()
:
df.to_numpy().tolist()
.tolist()
来完成它。df.to_numpy().tolist()
- Steven Rumbalski
map()
返回一个迭代器,因此回答变为list(map(list, df.values))
,这是一种过度设计,因为存在更短的拼写df.values.tolist()
。(另一个需要注意的事情是,截至pandas 0.24.0(2018年1月),他们建议将df.values
拼写为df.to_numpy()
,所以我认为它变成了df.to_numpy().tolist()
。它的优点是明确表明df.values
给出一个未包装的 numpy 对象,而.tolist()
应该在 numpy 文档中查找。) - Steven Rumbalski