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

使用Pandas从事件日志DataFrame中过滤剔除周末数据的问题求助

问题根因

  • 最后一行的过滤逻辑仅生成了临时的过滤结果,没有赋值给变量保存,所以你看不到修改后的效果
  • 时间类型存在隐性不匹配问题:你生成list_excluded时用的是pandas Timestamp类型迭代,和timestamp_date列的python原生date类型可能出现匹配失效的情况

修复后的可运行代码

from datetime import timedelta, date
import pandas as pd
    
# 数据加载
df= pd.read_csv("running-example.csv", delimiter=";")
df["timestamp"] = pd.to_datetime(df["timestamp"])
df["timestamp_date"] = df["timestamp"].dt.date
    
def daterange(date1, date2):
    # 先统一转成python date类型避免类型冲突
    date1 = date1.date()
    date2 = date2.date()
    for n in range(int ((date2 - date1).days)+1):
        yield date1 + timedelta(n)
    
# 取起止日期
start_dt = df["timestamp"].min()
end_dt = df["timestamp"].max()
print("Start_dt: {} & end_dt: {}".format(start_dt, end_dt))
    
# 6对应周六、7对应周日
weekends = [6,7]
    
# 生成要排除的周末日期列表
list_excluded = [dt for dt in daterange(start_dt, end_dt) if dt.isoweekday() in weekends]
# 过滤后赋值给新的df
df_filtered = df[~df["timestamp_date"].isin(list_excluded)]

更简化的实现方案

无需单独生成排除列表,直接通过pandas内置的星期属性一步完成过滤,性能更高逻辑更简洁:

import pandas as pd

df= pd.read_csv("running-example.csv", delimiter=";")
df["timestamp"] = pd.to_datetime(df["timestamp"])
# 直接过滤:isoweekday返回1-5对应周一到周五,直接保留即可
df_filtered = df[df["timestamp"].dt.isoweekday().between(1,5)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:06:03