我想从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
是我想要的,但有没有更好的方法来获得相同的结果?
答案 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)
仍然混淆为什么.values
将array
视为object
......