将多个函数输出分配给python中pandas数据框中的单独列

问题描述 投票:0回答:1

我有一个带有3个输出的函数,为了提高效率,我想将该函数应用于数据框中的所有行。目前,我对函数调用3次,每列/输出一次,但是我想对函数调用一次并将所有3个输出保存到3个单独的列中。但是目前我找不到分配输出的方法。

理想情况下,我想要类似...

df2[col1, col2, col3] = function(x,y)

这是我当前的代码。

def getTextureMetrics(row,abb_name):
#tic=time.time()
d2=row[[col for col in ds.columns if abb_name+'_2' in col]].values #offset distance 2
maxOffset2=maxDiff(d2)
d6=row[[col for col in ds.columns if abb_name+'_6' in col]].values #offset distance 6
maxOffset6=maxDiff(d6)
d10=row[[col for col in ds.columns if abb_name+'_10' in col]].values #offset distance 10
maxOffset10=maxDiff(d10)
#print(tic-time.time())
return maxOffset2, maxOffset6, maxOffset10

for abb_name in unique(abb_names):
tic=time.time()
exec('df2["'+abb_name+'_2"]=df2.apply (lambda row: getTextureMetrics(row,abb_name)[0],axis=1)' )
exec('df2["'+abb_name+'_6"]=df2.apply (lambda row: getTextureMetrics(row,abb_name)[1],axis=1)' )
exec('df2["'+abb_name+'_10"]=df2.apply (lambda row: getTextureMetrics(row,abb_name)[2],axis=1)' )
python pandas lambda assign
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.