Pandas群组中的先前价值

时间:2017-09-13 16:27:37

标签: python pandas

我有以下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

我该怎么做?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

你需要:

df['value_t_minus1'] = df.groupby('x')['value'].shift()