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

如何基于指定日期为pandas DataFrame每行添加正负增量

实现方法

这个需求无需自定义函数,直接用pandas内置的索引运算即可实现,执行效率远高于自定义逐行运算方案。

前提

确保你的DataFrame已经按Date列升序排序,保证行的时间顺序符合你所说的「上方/下方」的定义。

操作步骤

  1. 定位Date等于First_Date的匹配行索引
  2. 利用整列索引和匹配索引的差值直接批量计算目标列

完整示例代码

import pandas as pd

# 构造示例数据,First_Date为全局常量
df = pd.DataFrame({
    'Date': pd.date_range(start='2024-01-01', end='2024-01-07'),
    'First_Date': pd.to_datetime('2024-01-04')
})

# 可选:如果索引不是连续默认整数,先按日期排序后重置索引
# df = df.sort_values('Date').reset_index(drop=True)

# 匹配目标行索引
match_idx = df[df['Date'] == df['First_Date']].index[0]

# 生成符合要求的偏移列
df['offset'] = (df.index - match_idx) * -1

运行结果示例

DateFirst_Dateoffset
2024-01-012024-01-043
2024-01-022024-01-042
2024-01-032024-01-041
2024-01-042024-01-040
2024-01-052024-01-04-1
2024-01-062024-01-04-2
2024-01-072024-01-04-3

异常兼容

如果存在无匹配行的场景,可以增加判断逻辑避免报错:

match_rows = df[df['Date'] == df['First_Date']]
if len(match_rows) == 0:
    df['offset'] = pd.NA
else:
    match_idx = match_rows.index[0]
    df['offset'] = (df.index - match_idx) * -1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:48:02