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

在Pandas中筛选Excel数据集本周里程碑数据遇属性错误求助

问题描述

需使用Pandas筛选Excel数据集,仅保留**2023-01-16至2023-01-20(本周)**的Next Milestone Date数据,同时去除日期格式中的时间部分。执行代码时触发错误:AttributeError: type object 'datetime.datetime' has no attribute 'weekdays',需修复错误并完成筛选需求。

数据集示例

Num Name Type Status Current %  Next Milestone Date
   1   sam  -    Open     54%     2023-01-16 00:00:00
   2   Dave -    Open     54%     2023-01-20 00:00:00
   3   Jake -    Open     45%     2023-01-13 00:00:00
   4   Oli  -    Open     30%     2023-01-31 00:00:00

错误原因分析

代码中datetime.weekdays(datetime.today())写法错误:

  • datetime.datetime类没有名为weekdays的属性,正确的实例方法是单数形式的weekday()
  • 原代码逻辑冗余复杂,完全可以通过Pandas内置的日期处理功能简化实现
解决方案

方案1:固定日期范围筛选(匹配需求中的2023-01-16至2023-01-20)

import pandas as pd
from datetime import datetime

# 模拟读取Excel数据(实际场景替换为pd.read_excel("你的文件路径.xlsx"))
data = {
    'Num': [1,2,3,4],
    'Name': ['sam','Dave','Jake','Oli'],
    'Type': ['-','-','-','-'],
    'Status': ['Open','Open','Open','Open'],
    'Current %': ['54%','54%','45%','30%'],
    'Next Milestone Date': ['2023-01-16 00:00:00','2023-01-20 00:00:00','2023-01-13 00:00:00','2023-01-31 00:00:00']
}
dataset = pd.DataFrame(data)

# 1. 转换日期列,去除时间部分
dataset['Next Milestone Date'] = pd.to_datetime(dataset['Next Milestone Date']).dt.date

# 2. 定义目标日期范围
start_date = datetime(2023,1,16).date()
end_date = datetime(2023,1,20).date()

# 3. 筛选符合条件的数据
dataset_modified = dataset[(dataset['Next Milestone Date'] >= start_date) & (dataset['Next Milestone Date'] <= end_date)]

print(dataset_modified)

方案2:动态计算本周范围(适配任意当前日期)

如果需要自动基于当前日期计算本周(周一至周五)范围,可使用以下代码:

import pandas as pd
from datetime import datetime, timedelta

# 固定当前日期为2023-01-20(实际场景替换为datetime.today().date())
today = datetime(2023,1,20).date()

# 计算本周一和本周五的日期
week_start = today - timedelta(days=today.weekday())
week_end = week_start + timedelta(days=4)

# 转换日期列并筛选
dataset['Next Milestone Date'] = pd.to_datetime(dataset['Next Milestone Date']).dt.date
dataset_modified = dataset[(dataset['Next Milestone Date'] >= week_start) & (dataset['Next Milestone Date'] <= week_end)]

最终筛选结果

Num  Name Type Status Current % Next Milestone Date
0    1   sam    -   Open      54%           2023-01-16
1    2  Dave    -   Open      54%           2023-01-20

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:05:21