我有一个带有列表列的pandas数据框.
df:
inputs
0 [1, 2, 3]
1 [4, 5, 6]
2 [7, 8, 9]
3 [10, 11, 12]
我需要矩阵
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]])
一个有效的方法来做到这一点?
注意:当我尝试df.inputs.as_matrix()时,输出为
array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]], dtype=object)
形状为(4,),而不是所需的(4,3).
解决方法:
您可以将列转换为列表,然后应用numpy数组,如果列中的所有列表具有相同的长度,则将创建2D数组:
arr = np.array(df.inputs.tolist())
#array([[ 1, 2, 3],
# [ 4, 5, 6],
# [ 7, 8, 9],
# [10, 11, 12]])
arr.shape
# (4, 3)
或另一个选项使用.values首先访问numpy对象,然后将其转换为@piRSquared注释的列表,这在给出的示例中稍快一些:
%timeit df.inputs.values.tolist()
# 100000 loops, best of 3: 5.52 µs per loop
%timeit df.inputs.tolist()
# 100000 loops, best of 3: 11.5 µs per loop
标签:pandas,python