应用具有多个参数的函数,包括python数据帧中groupby上一行的值

时间:2019-06-05 01:28:00

标签: python pandas dataframe pandas-groupby

我在名为“ td”的数据框中具有以下数据:

bookingID          Speed
---------          ------
000000001          10
000000002          20
000000001          30
000000003          40
000000001          50

基本上,我需要为每个bookingID计算加速度,因此输出必须如下所示:

bookingID          Speed     Acceleration
---------          ------    ------------
000000001          10        0
000000002          20        0
000000001          30        20
000000003          40        0
000000001          50        20

由于某些原因,此代码不起作用:

def get_accel(curr_speed,last_speed):
    return last_speed - curr_speed

td['Acceleration'] = td.groupby(['bookingID']).apply(lambda x: get_accel(td.Speed,td.Speed.shift()))

它说

  

试图在DataFrame的切片副本上设置一个值。   尝试改用.loc [row_indexer,col_indexer] =值

我在做什么错?谢谢

1 个答案:

答案 0 :(得分:1)

首先根据您的输出,这是一个diff问题

td['Acceleration'] = td.groupby('bookingID').Speed.diff().fillna(0)

如果您应用的功能是diff,则可以通过

对其进行修复
td['Acceleration']= td.groupby(['bookingID']).apply(lambda x: get_accel(x.Speed,x.Speed.shift())).reset_index(level=0,drop=True)
相关问题