2017-06-08 4 views
1

Ich habe Pandas Datenrahmen mit Datum eine Spalte, ich möchte eine neue Spalte mit vorherigen Datumsindex im Datenrahmen hinzufügen. Wie erreiche ich das? Probe df:Pandas erhalten Index des vorherigen Datums

index Date 
0 2015-10-03 
1 2015-11-03 
2 2015-11-30 
3 2015-11-30 
4 2015-12-03 

gewünschte Ausgabe:

index Date previous_day 
0 2015-10-03 0 
1 2015-11-03 0 
2 2015-11-30 1 
3 2015-11-30 1 
4 2015-12-03 3 
  1. Da bei Index 1 kein Vortages ist möchte ich 1 in Vortages.
  2. Seit Datum bei Index 2 ist die gleiche wie Index 3 I 1 in previous_day für Index erwarten 3.

Danke,

+0

Datum bei Index 2 ist nicht identisch mit Index 3! – harshil9968

+0

@ harshil9968 Datum bei Index 2 (2015-11-30) ist das gleiche wie Datum bei Index 3 (2015-11-30) – nilesh

Antwort

1

Ich glaube, Sie index von duplicated Werte von Date Spalte NaN ersetzen müssen und dann Weiterleiten dieser Werte. Auch ist notwendig Umbenennungs erster Wert des Index zu 1 und letzten subtrahieren 1:

Hinweis: Lösung funktioniert nur, wenn einzigartiger monotoner Index (0,1,2,...)

#see notice above 
df.reset_index(drop = True, inplace = True) 

df['prev'] = df.rename(index={0:1}) 
       .index.to_series() 
       .where(~df['Date'].duplicated()).ffill() 
       .astype(int) 
       .sub(1).values 
print (df) 
      Date prev 
index     
0  2015-10-03  0 
1  2015-11-03  0 
2  2015-11-30  1 
3  2015-11-30  1 
4  2015-12-03  3 
+1

Ja, funktioniert gut, ich stelle sicher, einzigartige monotone Index von 'df.reset_index (drop = True , inplace = True) ' – nilesh

+0

Super, es war sehr nette Idee;) – jezrael

Verwandte Themen