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

如何为DataFrame添加各站点预处理、处理中、处理后阶段的列标签

化学喷洒站点访问记录阶段标注解决方案

核心实现思路

先按站点对所有记录做分组,同组内的记录按访问日期升序排序,定位到该站点完成喷洒作业的记录后,按时间前后即可批量标注其余记录的所属阶段,无需写复杂的嵌套循环。


具体实现步骤

步骤1:数据预处理

  • 确认数据集至少包含站点ID、访问日期、是否当日完成喷洒3个核心字段
  • 统一日期字段的格式,避免因格式不统一出现排序、比对错误

步骤2:单站点标注逻辑(可直接批量套用到所有站点分组)

对单个站点排序后的所有访问记录:

  1. 先定位是否当日完成喷洒为是的记录,该条直接标注为活跃处理阶段
  2. 所有访问日期早于喷洒日期的记录,统一标注为预处理阶段
  3. 所有访问日期晚于喷洒日期的记录,统一标注为后处理阶段

注:如果单个站点存在多条标记为完成喷洒的记录,建议先做数据清洗确认有效作业记录,再执行标注逻辑。


代码实现参考

Pandas向量化实现(效率远高于循环,适合大数据量)

import pandas as pd

# 假设df为你的原始数据集
# 统一转日期格式
df['访问日期'] = pd.to_datetime(df['访问日期'])
# 按站点ID、访问日期升序排序
df = df.sort_values(['站点ID', '访问日期']).reset_index(drop=True)

# 提取每个站点的首次喷洒日期
spray_dates = df[df['是否当日完成喷洒'] == '是'].groupby('站点ID')['访问日期'].first().rename('喷洒日期')
# 关联回原数据集
df = df.merge(spray_dates, on='站点ID', how='left')

# 批量标注阶段
def label_stage(row):
    if pd.isna(row['喷洒日期']):
        return '无喷洒记录' # 可按业务需求调整返回值
    if row['访问日期'] < row['喷洒日期']:
        return '预处理阶段'
    elif row['访问日期'] == row['喷洒日期']:
        return '活跃处理阶段'
    else:
        return '后处理阶段'

df['处理阶段'] = df.apply(label_stage, axis=1)

for循环实现(适合小数据量、需要自定义特殊逻辑的场景)

# 第一步:按站点ID聚合所有记录
site_dict = {}
for record in 原始数据集:
    site_id = record["站点ID"]
    if site_id not in site_dict:
        site_dict[site_id] = []
    site_dict[site_id].append(record)

# 第二步:逐站点标注
final_result = []
for site_id, records in site_dict.items():
    # 同站点记录按日期排序
    sorted_records = sorted(records, key=lambda x: x["访问日期"])
    # 定位当前站点的喷洒日期
    spray_date = None
    for rec in sorted_records:
        if rec["是否当日完成喷洒"] == "是":
            spray_date = rec["访问日期"]
            break
    # 逐记录标注阶段
    for rec in sorted_records:
        if rec["访问日期"] < spray_date:
            rec["处理阶段"] = "预处理阶段"
        elif rec["访问日期"] == spray_date:
            rec["处理阶段"] = "活跃处理阶段"
        else:
            rec["处理阶段"] = "后处理阶段"
        final_result.append(rec)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:36:05