在 Pandas 数据框中,如何提取同一列中不同行上的值之间的差异,以第二列为条件?

TJE*_*TJE 1 python slice pandas

这是一个更大项目的一部分,但我已将问题分解为多个步骤,所以这是第一步。采用 Pandas 数据框,如下所示:

index | user   time     
---------------------
 0      F       0   
 1      T       0   
 2      T       0   
 3      T       1   
 4      B       1 
 5      K       2 
 6      J       2 
 7      T       3 
 8      J       4 
 9      B       4 
Run Code Online (Sandbox Code Playgroud)

对于每个唯一用户,我可以在某些条件下提取“时间”列中的值之间的差异吗?

例如,用户 J 有两个实例,这两个实例之间的“时间”差异是 2。我可以提取这两行之间的差异 2 吗?然后,如果该用户再次出现,请提取该行与数据框中该用户之前出现之间的差异?

jez*_*ael 5

我相信需要DataFrameGroupBy.diff

df['new'] = df.groupby('user')['time'].diff()
print (df)
  user  time  new
0    F     0  NaN
1    T     0  NaN
2    T     0  0.0
3    T     1  1.0
4    B     1  NaN
5    K     2  NaN
6    J     2  NaN
7    T     3  2.0
8    J     4  2.0
9    B     4  3.0
Run Code Online (Sandbox Code Playgroud)