具有多个参数的Python函数

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

我写了以下代码

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中的值。

python function dictionary apply
1个回答
0
投票

您需要将结果添加到运行列表中,如下所示:

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相同。

© www.soinside.com 2019 - 2024. All rights reserved.