2017-09-18 31 views
2

我有一個有多個列的數據幀。其中一列是累積收入列。如果當年沒有竣事,因爲即將到來的日收入爲0拉姆達熊貓數據框中的行減法

數據框看起來像這樣

enter image description here

的收入將是週期的其餘時間常數現在我想創建一個新列,其中行被最後一行減去,如果結果爲0,則在新列中爲該行輸出0。如果不是零,則使用行值。新的數據幀應該是這樣的:

enter image description here

我的想法是與應用拉姆達的方法來做到這一點。因此,這是思維:

{DF [ '2017new'] = DF [ '2017年']申請(拉姆達X:0,如果行 - LASTROW == 0否則x)}

但我不知道如何寫行 - lastrow部分代碼。這個怎麼做?提前致謝!

回答

2

我們可以移動數據,並且使用np.where

df['new'] = np.where(df['2017']-df['2017'].shift(1)==0,0,df['2017']) 

df.where

df['new'] = df['2017'].where(df['2017']-df['2017'].shift(1)!=0,0) 
 
    2016 2017 new 
0 10 21 21 
1 15 34 34 
2 70 40 40 
3 90 53 53 
4 93 53 0 
5 99 53 0 
3

填寫基於條件的值通過使用np.where

df2['New']=np.where(df2['2017'].diff().eq(0),0,df2['2017']) 
df2 
Out[190]: 
    2016 2017 New 
0 10 21 21 
1 15 34 34 
2 70 40 40 
3 90 53 53 
4 93 53 0 
5 99 53 0