如何用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取值不同(两者同时满足也需保留)。
解决方案
直接通过布尔索引实现筛选,步骤如下:
- 构造筛选条件
用!=比较对应列的取值,再用|(逻辑或)合并两个条件:
filter_condition = (df['date1'] != df['date3']) | (df['date2'] != df['date4'])
- 应用条件筛选行
将布尔条件传入DataFrame的索引,提取符合要求的行:
filtered_df = df[filter_condition]
说明
原数据中的空值以空字符串形式存在,!=操作可以直接识别空值与非空值、不同字符串之间的差异。比如某行date1有值但date3为空,或者date2和date4取值不一致,都会被纳入筛选结果。
内容的提问来源于stack exchange,提问作者abhi krishnan
相关产品推荐
相关产品推荐

