Python 熊猫导出向量并将其形状更改为一维数组

Python 熊猫导出向量并将其形状更改为一维数组,python,arrays,pandas,numpy,multidimensional-array,Python,Arrays,Pandas,Numpy,Multidimensional Array,我有一个pd数据框 df = {'col1': [1, 2], 'col2': [3, 4]} 通过执行以下操作,我可以创建col2的ndarray: col2 = np.array(df['col2'].values) 我想添加一个数字作为该向量的第一个元素,我尝试了以下方法: col2=np.array([0]) col2=col2.append( np.array(df['col2'].values)) 但它给出了错误 我还尝试了连接和(df['col2'].values).toli

我有一个pd数据框

df = {'col1': [1, 2], 'col2': [3, 4]}
通过执行以下操作,我可以创建col2的ndarray:

col2 = np.array(df['col2'].values)
我想添加一个数字作为该向量的第一个元素,我尝试了以下方法:

col2=np.array([0])
col2=col2.append( np.array(df['col2'].values))
但它给出了错误

我还尝试了连接和(df['col2'].values).tolist()
但是我无法解决这个问题。

np.append
对于串联任务来说效率很低。您可以使用
np.hstack
np.concatenate
。另请注意,返回一个NumPy数组,因此不需要通过
np.array显式强制转换:

df = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})

col2 = np.array([0])
col2 = np.hstack((col2, df['col2'].values))

# array([0, 3, 4], dtype=int64)
正如@user3483203所评论的,NumPy数组不是必需的,尽管您会看到速度的微小提高。您可以将
list
pd.Series
对象与
np.hstack
一起使用:

col2 = np.hstack(([0], df['col2']))

您甚至不需要调用
np.hstack(([0],df.col2))
hstack
可以很好地处理该系列。在阵列上操作时,您将获得非常小的速度提升,但在较大的尺寸下,差异不会增加