You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于行值删除Pandas DataFrame中的行(熵离散化场景)

熵离散化代码问题修复

删除阈值对应行的实现方法

你原有代码写法错误的核心原因有三个:

  • drop是可调用方法,需要用括号传递参数而非方括号
  • Pandas方法默认返回新对象,不会修改原变量,操作后需要重新赋值给原变量
  • s.iloc[0]是完整的行数据对象,不是行索引,不能直接作为drop的入参

正确实现方式

如果需要删除所有A列值等于当前阈值的行,直接用布尔索引过滤即可,这是最稳定的实现:

s = s[s['A'] != threshold]

如果你只需要删除当前取阈值的第一行数据,可以按行索引删除:

s = s.drop(s.index[0])

现有代码其他注意事项

你当前的代码还有几处明显逻辑问题,后续运行会报错:

  • 你用字典I存储每次计算的信息增益和阈值,每次循环都会覆盖原有值,后续计算最大信息增益时无法取到所有历史阈值的增益结果,建议将I改为列表,每次循环append {'informationGain':informationGain,'threshold':threshold}结构
  • 循环结束后调用np.amax(informationGain)时,informationGain是循环内的局部变量,此时已经不存在,你需要从I列表中提取所有信息增益值再求最大值
  • 你调用bestPartition时传入了未定义的minInformationGain变量,且bestPartition函数没有返回分箱后的数据集,最后无法得到你想要的分箱结果

内容的提问来源于stack exchange,提问作者Evan Gertis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 18:15:03