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

Pandas DataFrame按User_ID分组根据日期差修正Age字段的快速实现方法

高效实现方案

核心逻辑利用pandas原生向量化操作完成,避免逐行/逐分组循环,百万级数据量也可快速跑完:

  1. 先确保Date列为datetime格式(若已转换可跳过)
import pandas as pd

# 示例数据构造
df = pd.DataFrame({
    "User_ID": [ "N1", "N2", "N3", "N1", "N1", "N2", "N3", "N2" , "N1", "N1", "N1", "N2"],
    "Date": [ "31/10/2021", "31/10/2020" , "31/10/2019", "24/10/2019", "22/10/2018", "15/10/2017", "14/10/2017", "13/10/2016", "12/10/2016", "11/10/2015", "2/10/2015", "1/10/2015" ],
    "Age": [6,5,8,6,6,5,8,5,6,6,6,5]
})

# 日期格式转换,dayfirst=True适配日/月/年输入格式
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
  1. 核心修正逻辑
# 按用户分组取最大日期,计算年份差后修正Age
df['Age'] = df['Age'] - (df.groupby('User_ID')['Date'].transform('max').dt.year - df['Date'].dt.year)

运行后输出结果完全符合预期,该方案全程用pandas内置优化算子,没有自定义循环逻辑,是当前场景下性能最优的实现方式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:15:03