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

Python实现月度8天周期内至少7天任务达标状态判断功能

合规报告用户任务完成情况校验实现

实现思路

  • 先将日期列转成标准时间格式并排序,保证时间顺序正确
  • 补全指定月份所有连续日期,无数据的日期默认视为未完成任务(req_met为FALSE),解决原数据日期不连续的问题
  • 将req_met字段转成数值型(TRUE为1,FALSE为0),使用8天滑动窗口求和,只要存在任意窗口求和结果≥7就返回1,否则返回0

代码实现

import pandas as pd

def check_compliance(user_month_df):
    # 1. 预处理:转换日期格式、转req_met为数值、按日期排序去重
    df = user_month_df.copy()
    df['Date'] = pd.to_datetime(df['Date'])
    df['req_met'] = df['req_met'].map({'TRUE': 1, 'FALSE': 0})
    df = df.sort_values('Date').drop_duplicates('Date').set_index('Date')
    
    # 2. 补全当月所有连续日期,缺失记录默认未完成(填0)
    month_start = df.index.min().to_period('M').to_timestamp()
    month_end = df.index.max().to_period('M').to_timestamp(how='end')
    full_date_range = pd.date_range(start=month_start, end=month_end, freq='D')
    df_full = df.reindex(full_date_range, fill_value=0)
    
    # 3. 滑动窗口统计8天内完成天数,判断是否有达标窗口
    rolling_sum = df_full['req_met'].rolling(window=8, min_periods=8).sum()
    return 1 if (rolling_sum >= 7).any() else 0

使用说明

单用户单月测试

用你提供的示例数据测试输出符合预期:

# 示例数据构造
ids = 1
req_met = ['TRUE', 'TRUE', 'FALSE', 'FALSE', 'TRUE', 'TRUE', 'TRUE', 'FALSE', 'TRUE', 'TRUE', 'TRUE', 'TRUE', 'FALSE', 'FALSE', 'FALSE', 'FALSE', 'TRUE', 'TRUE', 'TRUE', 'FALSE']
date = ['2018-01-01', '2018-01-03', '2018-01-04', '2018-01-05', '2018-01-06', '2018-01-07', '2018-01-08', '2018-01-09', '2018-01-10', '2018-01-11',
'2018-01-12',  '2018-01-13', '2018-01-14', '2018-01-15', '2018-01-16', '2018-01-17', '2018-01-18', '2018-01-19', '2018-01-21', '2018-01-23']
df = pd.DataFrame({'id':ids, 'Date':date, 'req_met':req_met})

# 调用函数
print(check_compliance(df)) # 输出结果为1,符合预期

多用户多月批量计算

如果是全量数据,可以直接分组调用函数批量生成结果:

df['Date'] = pd.to_datetime(df['Date'])
df['month'] = df['Date'].dt.to_period('M')
compliance_result = df.groupby(['id', 'month']).apply(check_compliance).reset_index(name='compliance_flag')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:54:02