2014-01-29 36 views
2
import pandas as pd 

def greater_or_less(d): 
    if d['current'] > d['previous']: 
     d['result']="Greater" 
    elif d['current'] < d['previous']: 
     d['result']="Less" 
    elif d['current'] == d['previous']: 
     d['result']="Equal" 
    else: 
     pass 
    return d 

df=pd.DataFrame({'current':[1,2,2,8,7]}) 

# Duplicate the column with shifted values 
df['previous']=df['current'].shift(1) 

df['result']="" 

df=df.apply(greater_or_less,axis=1) 

結果是:獲取上一行值適用()函數

current previous result 
     1  NaN   
     2   1 Greater 
     2   2 Equal 
     8   2 Greater 
     7   8  Less 

我然後刪除previous列,因爲它是不再需要。結束於:

current result 
     1   
     2 Greater 
     2 Equal 
     8 Greater 
     7  Less 

如何在不添加額外列的情況下做到這一點?

我想要做的是知道如何從greater_or_less函數中引用上一行的值。

回答

2

使用diff()方法:

import pandas as pd 
import numpy as np 
df=pd.DataFrame({'current':[1,2,2,8,7]}) 
np.sign(df.current.diff()).map({1:"Greater", 0:"Equal", -1:"Less"})