将numpy数组转换为dataframe列?

时间:2017-06-08 00:04:38

标签: python pandas numpy dataframe

如何将numpy数组转换为数据帧列。假设我创建了一个空数据帧df,我循环遍历代码以创建5个numpy数组。我的for循环的每次迭代,我想将我在该迭代中创建的numpy数组转换为我的数据帧中的一列。只是为了澄清,我不想在循环的每次迭代中创建一个新的数据帧,我只想在现有的一个列中添加一个列。我下面的代码是粗略的,在语法上不正确,但说明了我的观点。

df = pd.dataframe()
for i in range(5):
   arr = create_numpy_arr(blah) # creates a numpy array
   df[i] = # convert arr to df column

3 个答案:

答案 0 :(得分:2)

那将有效

import pandas as pd
import numpy as np

df = pd.DataFrame()

for i in range(5):
    arr = np.random.rand(10)
    df[i] = arr

也许更简单的方法是使用矢量化

arr = np.random.rand(10, 5)
df = pd.DataFrame(arr)

答案 1 :(得分:1)

由于您要创建列而不是数组中的整个DataFrame,因此可以

import pandas as pd
import numpy as np

column_series = pd.Series(np.array([0, 1, 2, 3]))

要将该列分配给现有的DataFrame

df = df.assign(column_name=column_series)

上面将在column_name中添加一个名为df的列。

相反,如果您没有任何DataFrame来分配这些值,则可以将dict传递给构造函数以从numpy数组创建一个命名列:

df = pd.DataFrame({ 'column_name': np.array([0, 1, 2, 3]) })

答案 2 :(得分:0)

这是最简单的方法:

df['column_name']=pd.Series(arr)