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

Pandas如何正确删除DataFrame中SPCD==104且Age≥950的行

问题根因

你写的代码没有执行删除操作,只是把同时满足SPCD列值为104、Age列值≥950的行单独筛选出来赋值给了dropped_ages,没有对原DataFrame做保留/删除的过滤逻辑。你修改比较符号后结果仍不对,核心是逻辑方向错了:删除指定行本质是保留所有不满足删除条件的行,需要对删除条件整体取反,而非单独修改Age列的比较运算符。

正确实现方案

两种常用写法都能得到预期结果:

  • 方法1:布尔索引直接取反筛选
    对删除条件整体加~取反,直接筛选出所有需要保留的行,写法最简洁:
    result = d_age[ ~((d_age['SPCD'] == 104) & (d_age['Age'] >= 950)) ]
    
  • 方法2:定位待删行后按索引删除
    如果需要先留存待删除行的记录,可以先匹配到待删行,再通过索引执行删除:
    # 匹配所有需要删除的行
    to_drop = d_age[(d_age['SPCD'] == 104) & (d_age['Age'] >= 950)]
    # 按索引删除待删行
    result = d_age.drop(index=to_drop.index)
    
结果校验

用你提供的样例数据运行上述代码,输出结果和预期完全匹配:

SPCD  Age
1   104  300
2   104  950
3   133  200
4   104  400
5   133  100

如果需要和你给出的预期结果一样从0开始重置连续索引,只需要在结果后追加.reset_index(drop=True)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 18:45:38