shift()の使い方について


python初心者です。よろしくお願いします。

下記は正常に動くのですが、

[code]

    df['ud_flag'] = df.apply(lambda x : 1 if x.p == 1 else(-1 if x.p == -1 else 0),axis=1)
    
[/code]

udのフラグとして、1又は-1の値のみにしたい。  
つまり、udが0値の部分を、前回の1、又は-1のままとしたいので、下記のように修正するとエラーになります。

[code]

    df['ud_flag'] = df.apply(lambda x : 1 if x.p == 1 else(-1 if x.p == -1 else x.p.shift(1)),axis=1)
    
[/code]

エラー内容

[code]

    AttributeError: ("'int' object has no attribute 'shift'", 'occurred at index 0')
    
[/code]

データ

[code]

    ud    ud_flag
    0
    0
    1
    0
    0
    -1
    0
    1
    0
    0
    
[/code]




shift()は確か、配列に対して行、列をずらす関数です。  
なので、int型には使えないと思われます。

