【发布时间】:2023-04-10 10:44:01
【问题描述】:
我有一个具有 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)' )
【问题讨论】:
-
H Anders,只是友好的建议,但它有助于将标题框定为一个问题。有关详细信息,请参阅stackoverflow.com/help/how-to-ask。
标签: python pandas lambda assign