Python 3.x 当我创建一个Python函数来合并两个数据帧并输入各个值时,它就可以工作了。但是当我做循环时,我得到一个键错误
我创建了这个函数:Python 3.x 当我创建一个Python函数来合并两个数据帧并输入各个值时,它就可以工作了。但是当我做循环时,我得到一个键错误,python-3.x,pandas,for-loop,merge,keyerror,Python 3.x,Pandas,For Loop,Merge,Keyerror,我创建了这个函数: def designate(people,race): global i2 global clilaw i2=i2.sort_values(by=people) i2=pd.merge(i2,clilaw,how='left',left_on=people,right_on='category') i2[race]=i2['race'] 当我单独输入值时,它就起作用了 designate(prl[1],race2[1]) design
def designate(people,race):
global i2
global clilaw
i2=i2.sort_values(by=people)
i2=pd.merge(i2,clilaw,how='left',left_on=people,right_on='category')
i2[race]=i2['race']
当我单独输入值时,它就起作用了
designate(prl[1],race2[1])
designate(prl[2],race2[2])
...
designate(prl[12],race2[12])
但当我尝试创建一个循环来执行此操作时,如下所示:
for k in range(len(prl)):
designate(prl[k],race2[k])
我得到一个关键错误:
KeyError: 'race'
范围(len(prl))
是[0,1,dots,len(prl)-1
。
在for循环中,您试图访问
指定(prl[0],race2[0])
等等,但是当您手动输入值时,您从1
开始。这可能是问题吗?如果是,请尝试范围(1,len(prl)+1)
我现在明白了。每次合并完成时,都会有不同的race列(race\ux,race\y)因此在下一次迭代中,i2['race']不会被识别