pythonfor循环赋值变量

python for loop assignment of variable

我试图在这个for循环中给变量c赋值。

没有循环的代码工作正常但是,当我添加循环时 .assign(c=lambda x:eval(b)) 部分没有分配变量 c 的值,而是创建一个名为 'c' 的字段。

 for b,c in list(zip(file.transform,file.target_field)):


        df=df.set_index(['ID','Value'])    
        df = (df.unstack(0).T
            .assign(c=lambda x:eval(b))
            .stack()
            .unstack(0)).reset_index()

我尝试将代码更新为:

.assign(eval(c)=lambda x:eval(b))

但我得到一个错误 'keyword cant be an expression'

问题是您将 c 作为关键字参数提供给 assign

通过尝试 eval(c),您走在了正确的轨道上,更好的方法是使用您的 kwargs 创建字典,如下所示:

 for b,c in list(zip(file.transform,file.target_field)):
        # `c` will be evaluated to its value here
        args = {c: lambda x:eval(b)}
        df=df.set_index(['ID','Value'])    
        df = (df.unstack(0).T
            .assign(**args)
            .stack()
            .unstack(0)).reset_index()