技术问询:筛选每周时段数据,创建含周一12点至周三17点行的新df
筛选每周周一12:00至周三17:00的数据行
别担心,我来帮你搞定这个时间范围的筛选问题。首先得确保你的DataFrame里有一个datetime类型的时间列(假设列名叫timestamp),如果是字符串格式的话,第一步先把它转成datetime:
import pandas as pd # 先把时间列转换为datetime类型(如果还没转的话) df['timestamp'] = pd.to_datetime(df['timestamp'])
接下来,我们需要基于星期几和具体时间来构建筛选条件。这里要注意:pandas里dt.weekday返回的是0(周一)到6(周日)的数字,所以我们可以分三个情况组合条件:
- 周一(weekday=0):时间 >= 12:00:00
- 周二(weekday=1):全天所有时间都符合要求
- 周三(weekday=2):时间 <= 17:00:00
把这些条件用逻辑运算符组合起来,就能得到目标数据了:
# 定义各个筛选条件 cond_monday = (df['timestamp'].dt.weekday == 0) & (df['timestamp'].dt.time >= pd.to_datetime('12:00:00').time()) cond_tuesday = df['timestamp'].dt.weekday == 1 cond_wednesday = (df['timestamp'].dt.weekday == 2) & (df['timestamp'].dt.time <= pd.to_datetime('17:00:00').time()) # 组合条件并生成新的DataFrame filtered_df = df[cond_monday | cond_tuesday | cond_wednesday]
额外注意事项
- 如果你的时间列带时区信息,记得确保所有时间的时区统一,避免因时区偏差导致筛选出错。
- 可以先打印几个样本行的
dt.weekday和dt.time值,确认时间列解析正确,避免星期几对应错误导致结果不符合预期。 - 若时间列包含毫秒等精度信息,
dt.time会自动提取时分秒部分进行比较,不会影响筛选逻辑。
内容的提问来源于stack exchange,提问作者Tie_24
相关产品推荐
相关产品推荐

