如何基于DataFrame列中内嵌日期筛选指定日期范围的行?
提取DataFrame中指定日期范围的行
基于你已经通过date_df=tmp_DF['UId'].str.split('/', expand=True)拆分出年、月、日列的操作,以下是完成日期范围筛选的具体步骤:
方法一:基于拆分后的列处理
合并并转换日期格式
将拆分得到的年、月、日列(对应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')筛选指定日期范围的行
定义目标日期范围,通过布尔索引筛选符合条件的行:# 示例:筛选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)]可选:清理临时列
如果不需要新增的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
相关产品推荐
相关产品推荐

