2016-11-24 29 views
1

我有一個現有的熊貓DataFrame,我想添加一個新列,其中每行的值將取決於前一行。 例如:將新列添加到熊貓DataFrame,其值依賴於前一行

df1 = pd.DataFrame(np.random.randint(10, size=(4, 4)), columns=['a', 'b', 'c', 'd']) 

df1 
Out[31]: 
    a b c d 
0 9 3 3 0 
1 3 9 5 1 
2 1 7 5 6 
3 8 0 1 7 

現在我想創建塔E,其中對於每個行i DF1的值[ 'E'] [I]是:df1['e'][i] = df1['d'][i] - df1['d'][i-1]

期望的輸出:

df1: 
    a b c d e 
0 9 3 3 0 0 
1 3 9 5 1 1 
2 1 7 5 6 5 
3 8 0 1 7 1 

我該怎麼做到這一點?

+0

如果我的回答對您有所幫助,不要忘了'accept'它。謝謝。 – jezrael

回答

1

您可以使用subshift

df['e'] = df.d.sub(df.d.shift(), fill_value=0) 
print (df) 
    a b c d e 
0 9 3 3 0 0.0 
1 3 9 5 1 1.0 
2 1 7 5 6 5.0 
3 8 0 1 7 1.0 

如果需要轉換爲int

df['e'] = df.d.sub(df.d.shift(), fill_value=0).astype(int) 
print (df) 
    a b c d e 
0 9 3 3 0 0 
1 3 9 5 1 1 
2 1 7 5 6 5 
3 8 0 1 7 1 
相關問題