获取DataFrame列值作为具有目标dtype的数组

时间:2017-12-27 07:00:34

标签: python pandas

我想从DataFrame中获取列值,该值由数组组成。使用DataFrame.values,返回的dtype是对象,我想要的是float64

a=pd.DataFrame({'vector':[np.array([1.1,2,3]),np.array([2.1,3,4])]})
print(a)

b=a['vector'].values
print(b.dtype)
print(b.shape)

c=np.array([i for i in  a['vector']])
print(c.dtype)
print(c.shape)

>>>             vector
>>> 0  [1.1, 2.0, 3.0]
>>> 1  [2.1, 3.0, 4.0]
>>> object
>>> (2,)
>>> float64
>>> (2, 3)

为什么b和c有不同的dtype

c是我想要的,但有没有更好的方法来获得相同的结果?

2 个答案:

答案 0 :(得分:1)

Series转换为列表,然后将其传递给np.array即

np.array(a['vector'].tolist())

array([[ 1.1,  2. ,  3. ],
   [ 2.1,  3. ,  4. ]])

答案 1 :(得分:0)

根据https://stackoverflow.com/a/33718947/2251785

numpy.concatenate也应该有用。

d=np.concatenate(a['vector'].values).reshape(len(a),-1)

仍然混淆为什么.valuesarray视为object ......