2017-09-13 142 views
1

内前值我有以下的熊猫数据框:熊猫集团

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 

我怎样才能做到这一点?

回答

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 
+0

非常感谢你 –

2

您需要:

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