python-3.x - 当我创建一个 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'
解决方案
range(len(prl))
是[0, 1, \dots, len(prl)-1
。在 for 循环中,您尝试访问designate(prl[0], race2[0])
等等,但是当您手动输入值时,您从1
. 这可能是问题吗?如果是这样试试range(1, len(prl)+1)
。
推荐阅读
- reactjs - 如何在 Cypress 中模拟 websocket 消息
- google-chrome - Chrome "immersive-vr" isSessionSupported 给出 false 与 threejs.org 示例
- python - 如何对数据框应用过滤器以选择大于阈值的值?
- ammonite - 如何使用来自 Ammonite 脚本的资源?
- c# - System.InvalidOperationException: '除非指定了 BindingContext 或 BindingContext 控件,否则不能发生数据绑定。'
- google-bigquery - 使用 SQL 或 Web UI 在 bigquery 中创建带有日期后缀的分区表
- c# - 正确初始化和配置 TCP 连接 C# 中的 Socket
- angular - 使用动态模板创建动态组件(ComponentFactoryResolver)
- r - ggplot 条形图中的标签问题
- lua - 我应该使用带有 docker 的 Tarantool Cartridge 应用程序设置网络地址吗?