【发布时间】:2020-06-09 21:15:05
【问题描述】:
我写了以下代码
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,所有值都是相同的 - 这是来自 recent_sample 的 CarValue 的最后一个值。我尝试使用 map() 和 apply() 函数,但出现语法错误。我想要的只是将适当的值(该函数为 CarValue 的每条记录返回)作为变量 carvaluegrp2 中的值。
【问题讨论】:
-
您的
else缩进错误 -
谢谢艾哈迈德。我现在检查了一下,打印语句中的 grp 值很好。问题是将这些值映射到新变量的数据框中的每条记录。我只得到所有记录的最后一个重复值。
标签: python function dictionary apply