Skip to main content
 首页 » 编程设计

python之Pandas 在群体内的先前值(value)

2025年05月04日21zfyouxi

我有以下 Pandas 数据框:

    x  y  z  value 
0   1  a  a      1 
1   1  b  b      2 
2   1  c  c      3 
3   1  d  d      4 
4   1  a  e      5 
5   2  b  f      6 
6   2  c  a      7 
7   2  d  b      8 
8   2  a  c      9 

我需要将其转换为:

   x  y  z  value  value t-1 
0  1  a  a      1        NaN 
1  1  b  b      2          1 
2  1  c  c      3          2 
3  1  d  d      4          3 
4  1  a  e      5          4 
5  2  b  f      6        NaN 
6  2  c  a      7          6 
7  2  d  b      8          7 
8  2  a  c      9          8 

我该怎么做?

请您参考如下方法:

df['value_t_minus1'] = df.groupby('x')['value'].transform(lambda x: x.shift()) 
>>> df 
   x  y  z  value  value_t_minus1 
0  1  a  a      1             NaN 
1  1  b  b      2             1.0 
2  1  c  c      3             2.0 
3  1  d  d      4             3.0 
4  1  a  e      5             4.0 
5  2  b  f      6             NaN 
6  2  c  a      7             6.0 
7  2  d  b      8             7.0 
8  2  a  c      9             8.0