2017-09-13 108 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()