Python 将常量numpy数组值指定给dataframe列

Python 将常量numpy数组值指定给dataframe列,python,arrays,pandas,numpy,Python,Arrays,Pandas,Numpy,我想将常量numpy数组值分配给dataframe列 以下是我尝试过的: 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['ne

我想将常量numpy数组值分配给dataframe列

以下是我尝试过的:

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数组值?

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

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

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]    

对于类似于列表的值,它希望设置为列序列,因此期望长度相等
apply
方法类似于为每行设置forloop。您希望数据帧列包含一组空的
numpy.ndarray
对象?@juanpa.arrivillaga correct。它就像一个占位符,我稍后会连接到它。从很多角度来看,这是非常低效的。听起来你根本不应该使用
pandas
/
numpy
。@user1700890也许你应该打开一个单独的问题,描述你实际试图解决的问题是什么,到目前为止你做了什么,并给出一些示例数据。