2016-09-06 2 views
1

Ich versuche zu finden, wo die Jahre innerhalb einer angegebenen Grenzen für ein Datetime-Objekt sind. Ich habe versucht, eine For-Schleife zu machen, aber leider kann ich es nicht zum Laufen bringen. Ich weiß, dass ich nach Monaten und Jahren suchen kann, wenn ich ein Datetime-Objekt in ein Pandas-Array umwandle, aber leider hat die Software, die ich benutze, keine Pandas-Bibliothek und ich kann sie nicht auf meinen Schulserver herunterladen.Suche in einem Datetime-Objekt Python

Unten ist, wie ich in meiner Zeit Daten lesen und es funktioniert wunderbar (es viel Zeit beseitigt es meine Zeit einen anderen Weg genommen hätte umwandeln)

date = netCDF4.Dateset('filename.nc', mode = 'r') 
raw_time = data.variables['time'] 
time_converted = netCDF4.num2date(raw_time[:], raw_time.units) 

Die time_converted Variable ist ein Datetime-Objekt dass sieht wie folgt aus:

.... 
    datetime.datetime(2006, 1, 1, 0, 0), 
    datetime.datetime(2006, 2, 1, 0, 0), 
    datetime.datetime(2006, 3, 1, 0, 0), 
    datetime.datetime(2006, 4, 1, 0, 0), 
    datetime.datetime(2006, 5, 1, 0, 0), 
    datetime.datetime(2006, 6, 1, 0, 0), 
    datetime.datetime(2006, 7, 1, 0, 0), 
    datetime.datetime(2006, 8, 1, 0, 0), 
    datetime.datetime(2006, 9, 1, 0, 0), 
    ..... 

die Schleife unten ist mein letzter Versuch, und es gibt die folgende Fehlermeldung:

time = [] 
for i in time_converted: 
    if i.year>= 2006 and i.year<2016: 
     time.append(i) 

Type Error: 'int' object is not callable 

Innerhalb meiner Schleife habe ich versucht, auch mit datetime.datetime.year (i), aber das zurückgibt:

Type Error: 'getset_descriptor' is not callable 
+6

entfernen Klammer aus i.year(), es ist eine Eigenschaft keine Methode – Alex

+0

@Alex, wenn ich die Klammer entfernen, gibt es einen Indexfehler zurück, der angibt, dass nur ganze Zahlen, Scheiben, Ellipsen und 1-d Integer oder Boolesche Arrays gültige Indizes sind ... –

+0

Könnten Sie den Code einfügen, den Sie ausführen? Es sollte keine Indexfehler in Ihrer Schleife geben, schauen Sie sich StackTrace an, um herauszufinden, was schief gelaufen ist. – Alex

Antwort

0

Stellt sich heraus, ich brauchte die folgende Schleife zu verwenden, anstatt:

for i in range(len(time_converted)): 
    if time_converted[i].year >= 2006 and time_converted[i].year < 2016: 
     time.append(time_converted[i])