如何使用Pandas查询最近6个月的position数据
Pandas提取最近6个月position数据方案
你的需求无需用groupby即可实现,单纯过滤的话直接走时间布尔索引更高效,你提到的df["date"].dt.month用法存在跨年匹配缺陷,不推荐直接用来做时间筛选。完整实现步骤如下:
- 第一步:将date列转换为datetime格式,确保支持时间运算
代码:df['date'] = pd.to_datetime(df['date']) - 第二步:计算6个月前的时间阈值
以数据集内最新日期为基准的代码:six_months_cutoff = df['date'].max() - pd.DateOffset(months=6)
以当前系统时间为基准的代码:six_months_cutoff = pd.Timestamp.now() - pd.DateOffset(months=6) - 第三步:过滤时间范围提取position列
代码:recent_6m_position = df.loc[df['date'] >= six_months_cutoff, 'position']
如果你后续需要按月份对position做分组统计(比如每月职位数量、去重数等),才需要用到groupby,示例代码如下:
# 先过滤时间范围,再生成月份列做分组 df_recent = df[df['date'] >= six_months_cutoff].copy() df_recent['year_month'] = df_recent['date'].dt.to_period('M') # 按月份统计职位数,可替换为你需要的聚合逻辑 monthly_position_stats = df_recent.groupby('year_month')['position'].count()
注意事项
- 直接用
df['date'].dt.month筛选会导致跨年数据匹配错误,比如2024年1月往前推6个月包含2023年8-12月,这些月份的数值都大于1,直接按dt.month <= 当前月筛选会漏掉全部跨年数据。
内容的提问来源于stack exchange,提问作者Rag
相关产品推荐
相关产品推荐

