求助:Pandas代码执行时出现KeyError: 'NCT-ID (Total)'错误
问题排查与解决
KeyError: 'NCT-ID (Total)' 直接说明你的DataFrame surgeon 中不存在这个列名,以下是具体排查和解决步骤:
1. 确认DataFrame的所有列名
先运行这段代码,查看surgeon当前的所有列名:
print(surgeon.columns.tolist())
通过输出结果你可以排查:是否存在拼写错误、大小写不一致(比如nct-id (total))、列名含多余空格(比如 NCT-ID (Total)或NCT-ID (Total) ),或是列名被误写为类似NCT-ID(Total)(少了括号前后的空格)。
2. 针对常见列名问题的处理
- 大小写不一致:统一列名大小写后再操作:
surgeon.columns = surgeon.columns.str.lower() whole_list = ';'.join(surgeon[surgeon['nct-id (total)'].notnull()]['nct-id (total)'].astype(str)) - 列名含前后空格:先清理列名的空格:
surgeon.columns = surgeon.columns.str.strip() # 确认清理后的列名正确后,再执行你的拼接逻辑 - 列名实际名称不同:根据第一步打印出的列名,替换代码中的
'NCT-ID (Total)'为正确的列名即可。
3. 简化代码写法
确认列名正确后,你的代码可以简化为链式调用的形式,更简洁高效:
whole_list = ';'.join(surgeon.loc[surgeon['NCT-ID (Total)'].notnull(), 'NCT-ID (Total)'].astype(str))
内容的提问来源于stack exchange,提问作者Erin Wallace
相关产品推荐
相关产品推荐

