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

如何使用Pandas计算同一列中当前日期与5天前的数据差值?

使用Pandas计算同ID下当前数据与5天前数据的差值

处理思路

核心是按ID分组后精准匹配当前日期与5天前的对应数据,再计算差值。推荐用merge方法,能避免日期不连续时shift方法的误差。

步骤与代码示例

  1. 数据预处理:将日期列转为datetime格式,确保可进行日期运算
  2. 关联5天前数据:通过左连接匹配同ID下的5天前记录
  3. 计算差值:用当前数据减去5天前的数据
import pandas as pd

# 假设数据集存储在DataFrame df中,列名为ID、Date、Value
df['Date'] = pd.to_datetime(df['Date'])  # 转换日期格式为datetime

# 生成当前日期往前推5天的列,用于匹配
df['Date_5days_ago'] = df['Date'] - pd.Timedelta(days=5)

# 左连接原数据,匹配同ID且日期为5天前的记录
merged_df = pd.merge(
    df, 
    df, 
    left_on=['ID', 'Date_5days_ago'], 
    right_on=['ID', 'Date'], 
    how='left', 
    suffixes=('', '_5ago')
)

# 计算差值,无匹配项(如无5天前数据)会显示NaN
merged_df['Diff'] = merged_df['Value'] - merged_df['Value_5ago']

# 可选:保留需要的列并展示结果
result = merged_df[['ID', 'Date', 'Value', 'Diff']]
print(result)

示例结果

针对你提到的ID=1的记录:

ID:1,日期:2023-06-10,数据:22,Diff:7

这正是通过上述代码计算得到的结果(当ID=1在2023-06-05有对应数据15时)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:02:50