如何用Pandas生成指定日期区间内的周一列表并排除指定日期
Pandas生成排除指定周一的日期序列并转为DataFrame
要解决生成指定区间内排除特定周一的DataFrame问题,你可以通过布尔索引+isin()方法快速过滤日期,以下是具体实现:
完整代码实现
import pandas as pd # 设置日期区间 start_date = pd.to_datetime('8/22/2022') end_date = pd.to_datetime('12/22/2022') # 生成区间内所有周一的序列 all_mondays = pd.date_range(start=start_date, end=end_date, freq='W-MON') # 定义需要排除的周一列表 exclude_dates = pd.to_datetime([ '09/07/2022','10/12/2022','10/15/2022','10/28/2022', '11/01/2022','11/14/2022','11/15/2022','11/20/2022' ]) # 过滤掉需要排除的日期 filtered_mondays = all_mondays[~all_mondays.isin(exclude_dates)] # 转换为DataFrame result_df = pd.DataFrame({'周一日期': filtered_mondays}) print(result_df)
关键逻辑说明
all_mondays.isin(exclude_dates)会返回一个布尔数组,标记每个日期是否在排除列表中;- 前缀
~是取反操作,保留不在排除列表中的日期; - 最后用
pd.DataFrame()将过滤后的日期序列转为带列名的DataFrame。
额外说明
如果排除列表中存在不在原周一序列里的日期,isin()会自动忽略这些无效项,不会影响最终结果。
内容的提问来源于stack exchange,提问作者Reginaldo Demarque da Rocha
相关产品推荐
相关产品推荐

