【问题标题】:When I create a Python function to merge two dataframes and feed in values individual, it works. But when I do a loop, I get a key error当我创建一个 Python 函数来合并两个数据框并单独输入值时,它可以工作。但是当我做一个循环时,我得到一个关键错误
【发布时间】:2020-04-22 05:54:26
【问题描述】:

我创建了这个函数:

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.x pandas for-loop merge keyerror


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我现在明白了。每次合并完成时,都会创建不同的竞赛列(race_x,race_y),因此在下一次迭代期间,i2['race'] 无法识别。

      【讨论】:

        猜你喜欢
        • 2022-01-16
        • 1970-01-01
        • 2022-11-29
        • 2023-04-06
        • 1970-01-01
        • 1970-01-01
        • 2023-02-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多