2016-11-24 7 views
1

私は既存のpandas DataFrameを持っています。新しい列を追加したいのですが、各行の値は前の行に依存します。例えば :各行iについてDF1の値[ 'E']pandasに新しい列を追加する前の行に依存する値を持つ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['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

あなたはshiftsubを使用することができます。

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 
関連する問題