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

如何用Pandas筛选满足多日期列差异条件的DataFrame

Pandas筛选日期列不匹配的行

给定如下结构的Pandas DataFrame(date1、date2、date3、date4列类型为object字符串类型):

,unique_system_identifier,call_sign,date1,date2,date3,date4
0,3929436,WQZL268,14-06-2023,,14-06-2023,
1,3929436,WQZL268,,,,
2,3929437,WQZL269,14-06-2023,,14-06-2023,
3,3929437,WQZL269,,,,
4,3929438,WQZL270,14-06-2023,,14-06-2023,
5,3929438,WQZL270,,,,
6,3929439,WQZL271,14-06-2023,,14-06-2023,
7,3929439,WQZL271,,,,
8,3929440,WQZL272,14-06-2023,,14-06-2023,
9,3929440,WQZL272,,,,
10,3929441,WQZL273,14-06-2023,,14-06-2023,
11,3929441,WQZL273,,,,
12,3929442,WQZL274,14-06-2023,,14-06-2023,
13,3929442,WQZL274,,,,
14,3929443,WQZL275,14-06-2023,,14-06-2023,

需求:筛选出满足任一条件的行:date1与date3取值不同,或date2与date4取值不同(两者同时满足也需保留)。


解决方案

直接通过布尔索引实现筛选,步骤如下:

  1. 构造筛选条件
    用!=比较对应列的取值,再用|(逻辑或)合并两个条件:
filter_condition = (df['date1'] != df['date3']) | (df['date2'] != df['date4'])
  1. 应用条件筛选行
    将布尔条件传入DataFrame的索引,提取符合要求的行:
filtered_df = df[filter_condition]

说明

原数据中的空值以空字符串形式存在,!=操作可以直接识别空值与非空值、不同字符串之间的差异。比如某行date1有值但date3为空,或者date2和date4取值不一致,都会被纳入筛选结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:10:12