2016-01-04 51 views
0

我的DataFrame中的每一行都有一個日期,值和類別變量。我想創建一個包含來自同一類別的前一個值的新列。例如,基於最近值的新DataFrame列

import numpy as np 
import pandas as pd 

df = pd.DataFrame({'Catagory':[3,1,2,1,2,3], 'Value':[10,20,30,40,50,60]}) 

df['Date'] = pd.date_range('2015-1-1', '2015-1-6') 


>>> df 
    Catagory Value  Date 
0   3  10 2015-01-01 
1   1  20 2015-01-02 
2   2  30 2015-01-03 
3   1  40 2015-01-04 
4   2  50 2015-01-05 
5   3  60 2015-01-06 

我想新列看起來像這樣:

>>> df 
    Catagory Value  Date PreviousValue 
0   3  10 2015-01-01   NaN 
1   1  20 2015-01-02   NaN 
2   2  30 2015-01-03   NaN 
3   1  40 2015-01-04    20 
4   2  50 2015-01-05    30 
5   3  60 2015-01-06    10 

回答

1
df['Previous Value'] = df.groupby('Category')['Value'].shift() 

    Category Value  Date Previous Value 
0   3  10 2015-01-01    NaN 
1   1  20 2015-01-02    NaN 
2   2  30 2015-01-03    NaN 
3   1  40 2015-01-04    20 
4   2  50 2015-01-05    30 
5   3  60 2015-01-06    10 
+0

這比我努力的方式要好得多。謝謝。 – rurp