2016-10-27 3 views
3

Ich habe einen DataFrame nach Datum indiziert. Ich möchte in der Lage sein, alle Zeilen, bei denen der Index größer als ein Wert ist (wie heute), aus dem Datensatz zu entfernen, aber sie im Datenrahmen zu behalten. Was ist der beste Weg, dies zu tun? Zum Beispiel dieseBedingung Gesamte Zeile zu NaN/None in Pandas setzen

10/20/16 15, 20 
10/25/16 13, 12 
10/30/16 16, 15 

#--> 10/30/16 should go to NaN, NaN 

Antwort

5

Lösung mit DataFrame.mask, für mask ist notwendig, gleiche index wie df:

#convert index to datetime 
df.index = pd.to_datetime(df.index) 

mask = pd.Series(df.index > pd.datetime.today(), index=df.index) 
print (mask) 
Date 
2016-10-20 False 
2016-10-25 False 
2016-10-30  True 
dtype: bool 

df = df.mask(mask) 
print (df) 
       a  b 
Date     
2016-10-20 15.0 20.0 
2016-10-25 13.0 12.0 
2016-10-30 NaN NaN 
3
df.loc[df.index > pd.datetime.today()] = np.nan 
df 

enter image description here

Verwandte Themen