如何将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
答案 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)