【问题标题】:python for loop assignment of variablepython for循环赋值变量
【发布时间】:2019-12-27 20:24:09
【问题描述】:

我试图在这个 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))

但我收到错误“关键字不能是表达式”

【问题讨论】:

  • 等等,为什么df=df.set_index(['ID','Value']) 在循环中?如果您在循环的第一次设置索引,它会在第二次引发错误,因为它们已经是索引
  • 它在第二行代码中被取消堆叠

标签: python pandas for-loop assign


【解决方案1】:

问题是您将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()

【讨论】:

    猜你喜欢
    • 2014-01-21
    • 1970-01-01
    • 2013-06-09
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多