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

如何在数据集Date与Fdate相同时保留该日期前后一周的数据?

实现方法(基于Python Pandas)

步骤说明

  1. 转换日期格式:先把数据中的Date和Fdate列从字符串转成可计算的日期类型,这是后续日期运算的基础。
  2. 定位目标日期:找出所有Date与Fdate取值相同的行,提取这些日期并去重,避免重复处理同一日期。
  3. 筛选日期范围:对每个目标日期,计算其前后一周的时间段,然后筛选出所有Date落在这些时间段内的数据。
  4. 去重合并结果:如果不同目标日期的时间范围有重叠,同一行数据可能被多次选中,最后需要去重得到最终结果。

代码示例

import pandas as pd

# 加载数据集(请根据实际文件格式调整,比如Excel用pd.read_excel)
df = pd.read_csv("your_dataset.csv")

# 将日期列转换为datetime类型,确保可以进行日期运算
df["Date"] = pd.to_datetime(df["Date"])
df["Fdate"] = pd.to_datetime(df["Fdate"])

# 获取所有Date与Fdate相等的目标日期,去重处理
target_dates = df[df["Date"] == df["Fdate"]]["Date"].unique()

# 初始化空的结果集
filtered_data = pd.DataFrame()

# 遍历每个目标日期,筛选前后一周的数据
for target_date in target_dates:
    # 计算前后一周的起始和结束日期
    start = target_date - pd.Timedelta(weeks=1)
    end = target_date + pd.Timedelta(weeks=1)
    # 筛选当前范围内的数据
    temp_data = df[(df["Date"] >= start) & (df["Date"] <= end)]
    filtered_data = pd.concat([filtered_data, temp_data])

# 去重,避免同一行被多个时间范围重复选中
filtered_data = filtered_data.drop_duplicates().reset_index(drop=True)

# 输出结果
print(filtered_data)

可选:Excel实现方式

如果用Excel处理,步骤如下:

  • 步骤1:添加辅助列,用公式=A2=B2(假设Date在A列,Fdate在B列),筛选出结果为TRUE的行,记录这些行的Date值。
  • 步骤2:对每个记录的目标日期,计算前后一周的日期:
    • 前一周:=DATE(YEAR(目标日期单元格),MONTH(目标日期单元格),DAY(目标日期单元格)-7)
    • 后一周:=DATE(YEAR(目标日期单元格),MONTH(目标日期单元格),DAY(目标日期单元格)+7)
  • 步骤3:使用「高级筛选」功能,设置条件为Date >= 起始日期且Date <= 结束日期,将所有符合条件的行提取到新工作表中,最后合并去重。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:04:55