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

时间:2018-01-14 18:09:06

标签: python pandas dataframe pandas-groupby

如果这是一个非常基本的问题,我感到非常抱歉,但不幸的是,我在找出解决方案时失败了。

我需要从最后一个值&中减去列中的第一个值(在本例中是我的df中的第8列)。在将groupby应用于我的pandas df以获得每个id一个值之后,将其除以一个数字(例如60)。理想情况下,最终输出看起来像这样:

(df.iloc[-1,8] - df.iloc[0,8])/60

我有一个实际的等式,当应用于df的整个列时,它自己可以工作:

df.groupby(['id']).apply((df.iloc[-1,8] - df.iloc[0,8])/60)

但是我无法将此部分与groupby函数结合使用。其中,我试过申请,这是行不通的。

{{1}}

我也尝试使用方程式部分创建一个函数,然后执行apply(func)但到目前为止我的尝试都没有奏效。非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:2)

演示:

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