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

Python3如何从pandas dataframe中筛选工作日和周末的销售数据

实现方案

核心逻辑

首先将字符串格式的日期列转换为pandas原生datetime类型,之后通过日期的周内属性筛选拆分即可,全程用pandas向量化操作,效率远高于遍历类实现。

基础实现(适合绝大多数场景)

import pandas as pd

# 1. 转换日期格式,指定format参数大幅提升转换效率
visitresult_and_outcome['DATEONLY'] = pd.to_datetime(
    visitresult_and_outcome['DATEONLY'], 
    format='%Y-%m-%d'
)

# 2. 拆分数据
# dt.weekday返回值:0=周一、1=周二...4=周五、5=周六、6=周日
weekday_df = visitresult_and_outcome[visitresult_and_outcome['DATEONLY'].dt.weekday < 5].copy()
weekend_df = visitresult_and_outcome[visitresult_and_outcome['DATEONLY'].dt.weekday >= 5].copy()

注:如果DATEONLY列已经是datetime64类型,可直接跳过第一步日期转换操作

大数据量优化实现(千万行以上数据集推荐)

仅计算一次周内属性,避免重复计算开销:

# 日期转换步骤同基础实现
visitresult_and_outcome['DATEONLY'] = pd.to_datetime(
    visitresult_and_outcome['DATEONLY'], 
    format='%Y-%m-%d'
)

# 新增临时标记列,仅做一次周内属性计算
visitresult_and_outcome['is_weekend'] = visitresult_and_outcome['DATEONLY'].dt.weekday >= 5
weekday_df = visitresult_and_outcome[~visitresult_and_outcome['is_weekend']].copy()
weekend_df = visitresult_and_outcome[visitresult_and_outcome['is_weekend']].copy()

# 可选:删除原表中新增的临时标记列,不影响原始数据结构
visitresult_and_outcome.drop('is_weekend', axis=1, inplace=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:36:05