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