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

如何过滤pandas DataFrame,判断同出发到达组合是否存在未来出发日期

解决方法

首先将日期字段转为标准日期类型(避免字符串排序出现异常),之后按org和des分组,对分组内的日期升序排序后,判断当前行是否存在后续行即可生成目标字段:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
          'org': ['A', 'A', 'A', 'B', 'B'],
          'des': ['a', 'a', 'a', 'b', 'b'],
          'eff_departureDate': ['20200101', '20200102', '20200103', '20200101', '20200102']
})

# 1. 转换日期格式
df['eff_departureDate'] = pd.to_datetime(df['eff_departureDate'], format='%Y%m%d')

# 2. 按org、des分组生成has_future_dates字段
# 对每个分组内的日期升序排序后,shift(-1)会将下一行值移到当前行,非空即说明存在更晚日期
df = df.sort_values(['org', 'des', 'eff_departureDate'])
df['has_future_dates'] = df.groupby(['org', 'des'])['eff_departureDate'].shift(-1).notna()

# 3. 基于新增字段过滤,示例为仅保留存在后续日期的记录
filtered_df = df[df['has_future_dates'] == True]

运行后df输出结果和预期完全一致:

orgdeseff_departureDatehas_future_dates
Aa2020-01-01True
Aa2020-01-02True
Aa2020-01-03False
Bb2020-01-01True
Bb2020-01-02False

如果需要保留原始数据的行顺序,处理完字段后执行以下代码恢复即可:

df = df.sort_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:09:03