2017-05-19 2 views
1

Ich habe einen Pandas DatenrahmenTeilmenge der Pandas Datenrahmen

date   Speed 
1986-01-01  0.3 
.... 
2017-03-01  0.4 

wo Datum Daten frame.i ist indizieren möchten nur einen Datenrahmen erstellen, um Daten von 1986,2000 und 2017 ohne Datum Index wie

index date speed 
1  1986 0.3 
.... 
13  2000 0.5 
+1

Wenn Ihr Datenrahmen bereits mit einem 'DateTimeIndex' Objekt indiziert ist, dann können Sie einfach tun:' df [df.index.year.isin ([ 1986, 2000, 2017]]] '. – Abdou

Antwort

2

Ihr 'date' Index Unter der Annahme, ist bereits ein Datetime dtype:

df.reset_index(inplace = True) 
df['date'] = df['date'].dt.year 
df = df[df['date'].isin([1986,2000,2017])] 

... und wenn nicht, fügen df['date'] = pd.to_datetime(df['date']) nach dem reset_index

+0

Ich habe es versucht, dieser Befehl funktioniert nicht df = df [df ['Datum']. Isin [1986,2000,2017]] –

+0

ich bekomme diesen Fehler df = df [df ['Datum']. Isin [ 1986,2000,2017]] TypeError: 'instancemethod' Objekt hat kein Attribut '__getitem__' –

+0

Mein schlechter, aktualisierender Code. '.isin()' erfordert Parens. – pshep123

2

Verwenden Sie die folgenden Schritte aus:

# Step one -reindex 
df = df.reindex() 

# Step two - convert date column to date type 
df['date'] = pd.to_datetime(df['date']) 

# Step three - create year column using the date object 
df['year'] = df.date.dt.year 

# Step four - select target years 
df[df.year.isin([1986,2000])] 
Verwandte Themen