我写了以下代码
def createv(dsn,vname,benchdsn,benchvar):
#global grp
for t in range(len(dsn)):
w=dsn[vname].iloc[t]
#print(w)
for index in range(len(benchdsn)):
#print(index)
z = benchdsn[benchvar].iloc[index]
#print(z)
if w <= z:
grp = z
print(grp)
break
else:
continue
return grp
recent_sample['carvaluegrp2']= createv(recent_sample,'CarValue',df6,'carvalueU')
问题是对于新创建的变量carvaluegrp2,所有值都相同-这是last_sample中CarValue的最后一个值。我尝试使用map()和apply()函数,但是出现语法错误。我想要的只是拥有适当的值-该函数将为CarValue的每个记录返回-作为变量carvaluegrp2中的值。
您需要将结果添加到运行列表中,如下所示:
def createv(dsn,vname,benchdsn,benchvar):
result = []
for t in range(len(dsn)):
w=dsn[vname].iloc[t]
#print(w)
for index in range(len(benchdsn)):
#print(index)
z = benchdsn[benchvar].iloc[index]
#print(z)
if w <= z:
grp = z
print(grp)
break
result.append(grp)
return result
而且,您永远不需要else: continue
。这与使用if语句不使用else相同。