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

Pandas GroupBy自定义Lambda函数报错:计算PROP_ID分组的CATEGORY_DIFF首尾差值

问题解决:按PROP_ID分组计算CATEGORY_DIFF首尾差值

原始DataFrame结构

序号(IDX)物业ID(PROP_ID)年份(YEAR)类别(CATEGORY)类别差值(CATEGORY_DIFF)
11001198710
21001198721
31002199010
51002199010
61002199021
71002199032
...............

需求与报错代码

需要按PROP_ID分组,计算每个分组内CATEGORY_DIFF的第二个值与第一个值的差值。使用以下代码时持续报错:

df_prop_id = df.groupby('PROP_ID')['CATEGORY_DIFF'].apply(lambda x: x[1] - x[0])

期望结果

PROP_IDx[1]-x[0]
10011
10020

解决方案

报错核心原因是分组后的子Series保留了原始DataFrame的非连续索引,直接用x[1]会找不到对应索引的元素。可以用以下两种方法解决:

方法1:使用iloc按位置取值

iloc是基于位置的索引,不受原索引影响,直接取分组内第1位和第0位元素计算差值(Python索引从0开始,对应你要的第二个和第一个值):

df_prop_id = df.groupby('PROP_ID')['CATEGORY_DIFF'].apply(lambda x: x.iloc[1] - x.iloc[0])

方法2:重置分组内索引后取值

先重置每个分组的索引为连续整数,再按索引取值:

df_prop_id = df.groupby('PROP_ID')['CATEGORY_DIFF'].apply(lambda x: x.reset_index(drop=True)[1] - x.reset_index(drop=True)[0])

结果格式化(可选)

如果需要将结果转为和期望一致的DataFrame格式,可执行重命名和重置索引操作:

df_prop_id = df_prop_id.rename('x[1]-x[0]').reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:55:20