用于变量的循环分配的python

时间:2019-08-22 13:32:03

标签: python pandas for-loop assign

我正在尝试在此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))

但是出现错误“关键字不能是表达式”

1 个答案:

答案 0 :(得分:1)

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

尝试eval(c)可以使您走上正确的轨道,更好的方法是使用kwarg创建字典,如下所示:

 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()