2017-09-18 3 views
2

Ich habe einen Datenrahmen mit mehreren Spalten. Eine der Spalten ist die kumulative Umsatzspalte. Wenn das Jahr nicht beendet ist, dann werden die Einnahmen für den Rest der Zeit konstant sein, weil die kommenden täglichen Einnahmen sind 0.Zeilensubtraktion in Lambda Pandas Datenrahmen

Die Datenrahmen wie diese nun

enter image description here

sehen Ich möchte ein erstellen Neue Spalte, in der die Zeile von der letzten Zeile subtrahiert wird, und wenn das Ergebnis 0 ist, wird 0 für diese Zeile in der neuen Spalte ausgegeben. Wenn nicht Null, dann verwende den Zeilenwert. Der neue Datenrahmen soll wie folgt aussehen:

enter image description here

Meine Idee dies mit der Anwendung Lambda-Methode zu tun war. Das ist also das Denken:

{df [ '2017new'] = df [ '2017'] gelten (lambda x: 0, wenn row - LastRow == 0, sonst x).}

aber ich weiß nicht wissen, wie man die Zeile schreibt - lastrow Teil des Codes. Wie macht man das? Danke im Voraus!

Antwort

2

Wir können die Daten verschieben und die Werte auf Basis der Bedingung np.where d.h

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

oder mit df.where d.h

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

Durch die Verwendung von 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 
mit füllen