Pandas代码触发Key Error:Int64Index不在列中,请求排查解决
问题原因分析
你的代码触发KeyError的核心原因是错误地将列值当作列名来索引DataFrame:
- 代码中的
Unique[Unique['DiffTimeMinutes']]会把DiffTimeMinutes列的取值(比如错误提示里的53、0、0)当作列名去查找,而你的DataFrame里没有这些名称的列,因此抛出KeyError。 - 你真正想要的是基于
DiffTimeMinutes > 30的条件进行判断或筛选,而非用列值去选列。
修正方案
根据你的需求,分两种场景给出修正代码:
场景1:只要存在任意一行DiffTimeMinutes >30,就显示整个DataFrame
Unique['DiffTimeMinutes'] = Unique['DiffTimeMinutes'].fillna(0).astype(int) # 先生成布尔掩码,再用.any()判断是否有符合条件的行 if (Unique['DiffTimeMinutes'] > 30).any(): display(Unique)
场景2:只显示DiffTimeMinutes >30的行
不需要if判断,直接用布尔索引筛选即可:
Unique['DiffTimeMinutes'] = Unique['DiffTimeMinutes'].fillna(0).astype(int) # 筛选符合条件的行并显示 display(Unique[Unique['DiffTimeMinutes'] > 30])
额外提示
- 建议先执行
fillna(0)和类型转换,避免NaN值导致的逻辑判断异常(像你第二段代码那样先判断再处理NaN,可能会出现非预期的结果)。
内容的提问来源于stack exchange,提问作者Data Analyst Learner
相关产品推荐
相关产品推荐

