我想用1D数组(或列表,无论如何工作)填充Pandas Dataframe的单个单元格。 我要完成的工作是遍历一列中的值并执行一些操作,从而产生一个数组,我想将其存储在该DataFrame的另一列中。 我认为不可能(或非常不便)使用lambda函数执行此操作,因为我认为在线循环的时间太长了。
对于OvenTemp的每个值,另一个函数“样本”会创建许多3D坐标,其中NNdist(samples)给出了每个3D坐标的下一个邻居距离的列表。在不同的样本上有一些平均值,这对于编码不会有太大的影响;最后,有一个很长的一维浮点数数组,其中包含所有的NN距离。我现在想将此列表存储在“ NNDistList”列和OvenTemp的相应行中。 NNDistList将始终具有不同的长度,因为外部函数“ sample”正在创建不同大小的坐标集合。
代码如下:
distances=pd.DataFrame({'OvenTemp':OvenTemp,'NNDistList':np.zeros(len(OvenTemp))})
for i in distances.OvenTemp:
avgrun=1
avgresult=np.array([])
while avgrun<=averaging:
samples=sample(df.Radius[distances.OvenTemp==i].values[0],df.Dopants[df.OvenTemp==i].values[0])
NNresult=NNdist(samples)
avgresult=np.append(avgresult,NNresult)
avgrun+=1
distances.loc[distances.OvenTemp==i,'NNDistList']=avgresult
运行此代码,我得到错误“在设置可迭代项时必须具有相等的len键和值”。
I tried to use a wrapper for the last line, as suggested here, so it would read
distances.loc[distances.OvenTemp==i,'NNDistList']=[avgresult]
但是错误保持不变。老问题的答案中给出的示例对我来说很有效,即创建一个新的DataFrame并用一个numpy数组作为一个单元格填充它。 但是,通过numpy数组(我的代码)在已存在的DataFrame中添加/替换一个元素仍然会产生此错误。
对于该问题的任何解决方法,我将不胜感激,但也可以提供有关如何以更有效的方式进行一般编码的任何建议。
非常感谢你, Lepakk