首页 > 解决方案 > 当我创建一个 Python 函数来合并两个数据框并单独输入值时,它可以工作。但是当我做一个循环时,我得到一个关键错误

问题描述

我创建了这个函数:

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'

标签: python-3.xpandasfor-loopmergekeyerror

解决方案


range(len(prl))[0, 1, \dots, len(prl)-1。在 for 循环中,您尝试访问designate(prl[0], race2[0])等等,但是当您手动输入值时,您从1. 这可能是问题吗?如果是这样试试range(1, len(prl)+1)


推荐阅读