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

如何筛选两个DataFrame:获取start date大于A的End date的B子集

解决方法

首先要确保两个DataFrame的日期列是datetime类型,否则字符串格式的日期比较会出错,先做类型转换:

import pandas as pd

# 转换A的End date列为datetime
A['End date'] = pd.to_datetime(A['End date'])
# 转换B的start date列为datetime
B['start date'] = pd.to_datetime(B['start date'])

接下来分两种常见场景处理:

场景1:B的子集需要满足start date大于A中所有的End date

如果你的需求是筛选出B中所有start date晚于A里最晚的End date的行,只需先获取A的最大End date,再过滤B:

# 获取A中最晚的End date
max_end_date = A['End date'].max()
# 筛选B的子集
B_subset = B[B['start date'] > max_end_date]

场景2:A和B有对应关联键(比如ID),需匹配对应行的End date过滤

如果A和B存在共同的标识列(如用户ID、项目ID),需要筛选B中start date大于对应行的End date的记录,可以先合并两个DataFrame,再过滤:

# 仅保留A中关联键和End date列,与B合并
merged_df = B.merge(A[['ID', 'End date']], on='ID', how='left')
# 过滤符合条件的行,并移除合并进来的End date列
B_subset = merged_df[merged_df['start date'] > merged_df['End date']].drop('End date', axis=1)

执行完后,B_subset就是你要的目标子集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:41:09