2017-10-16 76 views
0

我想将常数numpy数组赋值给pandas dataframe列。将常数numpy数组值赋给pandas数据帧列

这里是我的尝试:

import pandas as pd 
import numpy as np 

my_df = pd.DataFrame({'col_1': [1,2,3], 'col_2': [4,5,6]}) 
my_df['new'] = np.array([]) # did not work 
my_df['new'] = np.array([])*len(df) # did not work 

这里是什么工作:

my_df['new'] = my_df['new'].apply(lambda x: np.array([])) 

我很好奇,为什么它有简单的标工作,但不与numpy的阵列工作。有更简单的方法来分配numpy数组值吗?

+1

对于类似列表的值,它期望设置为列系列,因此需要等长。 'apply'方法就像每个行的forloop设置。 – Zero

+0

你想让你的数据框列包含一堆空的'numpy.ndarray'对象? –

+0

@ juanpa.arrivillaga正确。它就像一个占位符,稍后我会连接它。 – user1700890

回答

1

IIUC,您的“新”列将包含数组,因此它必须是对象类型列。

初始化它最简单的方法是:

my_df = pd.DataFrame({'col_1': [1,2,3], 'col_2': [4,5,6]}) 
my_df['new']=None 

然后,您可以填满它,只要你想。例如:

for index,(a,b,_) in my_df.iterrows(): 
    my_df.loc[index,'new']=np.arange(a,b) 
#  
# col_1 col_2  new 
# 0  1  4 [1, 2, 3] 
# 1  2  5 [2, 3, 4] 
# 2  3  6 [3, 4, 5]