Python 在groupby之后的1列内相互减去2个值

Python 在groupby之后的1列内相互减去2个值,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,如果这是一个非常基本的问题,我很抱歉,但不幸的是,我在找出解决方案方面失败惨重 我需要从最后一个值中减去一列中的第一个值(在本例中为df中的第8列),并在将groupby应用于我的df后将其除以一个数字(例如60),以获得每个id的一个值。理想情况下,最终输出如下所示: id 1 1523 2 1644 当应用于df的整个列时,我有一个实际的方程,它自己工作: (df.iloc[-1,8] - df.iloc[0,8])/60 但是,我无法将此部分与groupby函

如果这是一个非常基本的问题,我很抱歉,但不幸的是,我在找出解决方案方面失败惨重

我需要从最后一个值中减去一列中的第一个值(在本例中为df中的第8列),并在将groupby应用于我的df后将其除以一个数字(例如60),以获得每个id的一个值。理想情况下,最终输出如下所示:

id     
1     1523
2     1644
当应用于df的整个列时,我有一个实际的方程,它自己工作:

(df.iloc[-1,8] - df.iloc[0,8])/60
但是,我无法将此部分与groupby函数相结合。除此之外,我尝试了apply,但没有成功

df.groupby(['id']).apply((df.iloc[-1,8] - df.iloc[0,8])/60)
我还尝试用等式部分创建一个函数,然后应用(func),但到目前为止,我的尝试都没有成功。非常感谢您的帮助,谢谢

演示:

In [204]: df
Out[204]:
   id  val
0   1   12
1   1   13
2   1   19
3   2   20
4   2   30
5   2   40

In [205]: df.groupby(['id'])['val'].agg(lambda x: (x.iloc[-1] - x.iloc[0])/60)
Out[205]:
id
1    0.116667
2    0.333333
Name: val, dtype: float64

我刚刚试过,但当我这样做时,我得到一个很长的keyrerror:-1错误消息(不确定它是否有助于发布整个长错误消息,如果有帮助,可以这样做)。我检查了一下,我的id是int64,col_name是float64,这可能是个问题吗?我错了,我尝试了第一个版本,但没有意识到它已经被编辑过了,这个解决方案很有魅力!!!