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

如何基于DataFrame列中内嵌日期筛选指定日期范围的行?

提取DataFrame中指定日期范围的行

基于你已经通过date_df=tmp_DF['UId'].str.split('/', expand=True)拆分出年、月、日列的操作,以下是完成日期范围筛选的具体步骤:

方法一:基于拆分后的列处理

  1. 合并并转换日期格式
    将拆分得到的年、月、日列(对应date_df的第1、2、3列,索引从0开始)合并为标准日期字符串,再转为datetime类型:

    tmp_DF['date'] = pd.to_datetime(date_df[1] + '/' + date_df[2] + '/' + date_df[3], format='%Y/%m/%d')
    
  2. 筛选指定日期范围的行
    定义目标日期范围,通过布尔索引筛选符合条件的行:

    # 示例:筛选2023年全年的数据
    start_date = pd.to_datetime('2023-01-01')
    end_date = pd.to_datetime('2023-12-31')
    
    filtered_df = tmp_DF[(tmp_DF['date'] >= start_date) & (tmp_DF['date'] <= end_date)]
    
  3. 可选:清理临时列
    如果不需要新增的date列,可直接删除:

    tmp_DF.drop('date', axis=1, inplace=True)
    

方法二:直接从原列提取日期(更简洁)

无需单独拆分出date_df,直接用正则从UId列提取日期部分并转换:

# 提取日期字符串并转为datetime类型
tmp_DF['date'] = pd.to_datetime(tmp_DF['UId'].str.extract(r'/(\d{4}/\d{2}/\d{2})/')[0], format='%Y/%m/%d')

# 执行范围筛选
filtered_df = tmp_DF[(tmp_DF['date'] >= start_date) & (tmp_DF['date'] <= end_date)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:47:12