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

如何基于相同Case标识计算Year列差值并新增YearDifference列?

Pandas按Case分组计算年份差值的实现方法

不用for循环,直接用Pandas的groupby+transform就能高效解决这个问题,步骤如下:

  1. 先构造示例DataFrame(模拟从SQL读取的数据):
import pandas as pd

# 模拟输入数据
data = {
    'Year': [2015, 2016, 2017, 2015, 2018],
    'Case': ['1A', '1A', '1A', '2F', '2F']
}
df = pd.DataFrame(data)
  1. 新增YearDifference列,按Case分组计算年份最大值与最小值的差值:
# 分组计算差值,并将结果映射回原DataFrame的每一行
df['YearDifference'] = df.groupby('Case')['Year'].transform(lambda x: x.max() - x.min())
  1. 查看结果:
print(df)

输出结果和你期望的一致:

Year Case  YearDifference
0  2015  1A               2
1  2016  1A               2
2  2017  1A               2
3  2015  2F               3
4  2018  2F               3

为什么不用for循环?

Pandas的transform方法会自动将分组计算的结果匹配到原DataFrame对应的每一行,全程是向量化操作,比手动写for循环效率高得多,尤其是数据量较大时,能避免循环带来的性能瓶颈。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:22:12