将 numpy 数组转换为数据框列?

Jan*_*lly 9 python numpy dataframe pandas

如何将 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
Run Code Online (Sandbox Code Playgroud)

use*_*433 11

这是最简单的方法:

df['column_name']=pd.Series(arr)
Run Code Online (Sandbox Code Playgroud)


Jul*_*lva 8

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

import pandas as pd
import numpy as np

column_series = pd.Series(np.array([0, 1, 2, 3]))
Run Code Online (Sandbox Code Playgroud)

将该列分配给现有的DataFrame

df = df.assign(column_name=column_series)
Run Code Online (Sandbox Code Playgroud)

上面将添加一个名为column_nameinto的列df

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

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


小智 1

那可行

import pandas as pd
import numpy as np

df = pd.DataFrame()

for i in range(5):
    arr = np.random.rand(10)
    df[i] = arr
Run Code Online (Sandbox Code Playgroud)

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

arr = np.random.rand(10, 5)
df = pd.DataFrame(arr)
Run Code Online (Sandbox Code Playgroud)