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

如何基于日期/星期匹配模式为时间序列添加指定布尔列?

解决方案:为时间序列添加布尔校验列

问题背景

现有一个时间序列数据集,其中观测值对应周一、周三、周六的日期,数据示例如下:

0           1
0     Saturday  03/23/2024
1    Wednesday  03/20/2024
2       Monday  03/18/2024
3     Saturday  03/16/2024
4    Wednesday  03/13/2024
..         ...         ...

需要添加两列布尔值:

  1. 第一列:检查当前日期是否被["Monday", "Wednesday", "Saturday"]中的不同两天前后夹着
  2. 第二列:检查当前日期与前一日期的时间差是否在[2,3]区间内

实现步骤(基于Pandas)

首先确保已导入pandas库,并加载数据到DataFrame中(假设DataFrame名为df):

import pandas as pd

# 加载数据(示例)
data = [
    ["Saturday", "03/23/2024"],
    ["Wednesday", "03/20/2024"],
    ["Monday", "03/18/2024"],
    ["Saturday", "03/16/2024"],
    ["Wednesday", "03/13/2024"]
]
df = pd.DataFrame(data, columns=["weekday", "date"])

步骤1:转换日期列为datetime类型

先把字符串格式的日期转换成Pandas可识别的datetime对象,这是后续计算的基础:

df["date"] = pd.to_datetime(df["date"], format="%m/%d/%Y")

步骤2:添加第一列(前后夹着不同目标星期)

我们需要:

  • 获取当前行的前一行星期(shift(1))和后一行星期(shift(-1))
  • 校验前、后星期都属于目标列表,且两者不相同

代码实现:

target_weekdays = {"Monday", "Wednesday", "Saturday"}

# 计算前一行和后一行的星期是否在目标列表中
prev_in_target = df["weekday"].shift(1).isin(target_weekdays)
next_in_target = df["weekday"].shift(-1).isin(target_weekdays)
# 校验前后星期不同
prev_next_diff = df["weekday"].shift(1) != df["weekday"].shift(-1)

# 合并条件得到第一列
df["is_sandwiched_by_diff_targets"] = prev_in_target & next_in_target & prev_next_diff

步骤3:添加第二列(时间差在[2,3]区间)

计算当前日期与前一日期的时间差(注意数据是倒序排列,所以用前一行日期减当前行日期),然后判断差值是否在2到3天之间:

# 计算日期差(单位:天)
date_diff = df["date"].shift(1) - df["date"]
date_diff_days = date_diff.dt.days

# 判断是否在[2,3]区间
df["diff_in_2_3_days"] = date_diff_days.between(2, 3)

最终结果示例

执行上述代码后,DataFrame会新增两列布尔值,示例输出如下:

weekday       date  is_sandwiched_by_diff_targets  diff_in_2_3_days
0    Saturday 2024-03-23                           False             False
1   Wednesday 2024-03-20                            True              True
2      Monday 2024-03-18                            True              True
3    Saturday 2024-03-16                            True              True
4   Wednesday 2024-03-13                           False             False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:05:56