我正在尝试在此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))
但是出现错误“关键字不能是表达式”
答案 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()