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

如何基于两列组合条件删除pandas中的指定行?

正确删除pandas中指定年月组合行的方法

错误原因

你使用的过滤条件(foo.Month != 1) & (foo.Year != 2020)逻辑是「保留同时满足月份不等于1、且年份不等于2020的行」,会把所有2020年的行、所有1月的行都排除,和你只删除2020年1月的需求不符。

解决方案

方法1:对删除条件直接取反(最直观)

我们要删除的是同时满足Month=1且Year=2020的行,只要对这个删除条件整体取反即可:

foo = foo[~((foo['Month'] == 1) & (foo['Year'] == 2020))]

方法2:用逻辑规则改写条件

根据德摩根定律,非(A且B) = 非A或非B,上面的条件也可以改写为:

foo = foo[(foo['Month'] != 1) | (foo['Year'] != 2020)]

注意这里用的是或运算符|,不是你之前使用的且运算符&。

方法3:多组合删除场景通用写法

如果后续需要删除多个年月组合,可以把要删除的组合存为元组列表,用isin批量判断,扩展性更强:

# 可随时新增多个需要删除的年月组合
to_drop = [(1, 2020)]
foo = foo[~foo[['Month', 'Year']].apply(tuple, axis=1).isin(to_drop)]

以上三种方法执行后,都会仅删除2020年1月的对应行,保留其余所有数据,输出结果如下:

Month  Year
1       2  2020
2       3  2020
3       4  2020
4       5  2020
5       6  2020
6       7  2020
7       8  2020
8       9  2020
9      10  2020
10     11  2020
11     12  2020
12      1  2021
13      2  2021
14      3  2021
15      4  2021
16      5  2021

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:57:03