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

Pandas如何按ID分组从单日期列生成符合规则的起止日期特征

实现方案

你之前的代码没有按ID分组计算,会出现跨ID取值的问题,按以下代码修改即可:

import pandas as pd

# 已按ID+Edit Date升序排序的前提下直接执行以下代码
# 生成End_Date列,直接取原Edit Date即可
df['End_Date'] = df['Edit Date']
# 按ID分组,组内取上一行的End_Date作为当前行Start_Date,组内首行的空值用当前End_Date填充
df['Start_Date'] = df.groupby('ID')['End_Date'].shift(1).fillna(df['End_Date'])
# 可选:删除原始Edit Date列
df.drop('Edit Date', axis=1, inplace=True)

# 如果还没做排序,先执行下面这句再跑上面的代码
# df = df.sort_values(['ID', 'Edit Date']).reset_index(drop=True)

逻辑说明

  • End_Date的取值就是当前行的原始Edit Date,不需要额外计算
  • 用groupby('ID')保证所有计算都在同一个ID的范围内完成,不会跨ID取值
  • 组内用shift(1)取上一行的结束日期作为当前行的开始日期,组内第一条记录shift后会得到空值,用fillna直接填充为当前行的结束日期,刚好满足首行起止日期相同的要求
  • 输出结果的列顺序可以按需调整,和你期望的输出结构完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:36:04