[Stock(date='2019-11-20', open='150.3100', high='150.8400', low='148.9600', close='148.9700', volume='11291822', indicator=0, signal='', change=0), Stock(date='2019-11-19', open='150.8800', high='151.3300', low='150.2000', close='150.3900', volume='23935700', indicator=0, signal='', change=0), Stock(date='2019-11-18', open='150.0700', high='150.5500', low='148.9800', close='150.3400', volume='21534000', indicator=0, signal='', change=0), Stock(date='2019-11-15', open='148.9300', high='149.9900', low='148.2700', close='149.9700', volume='23485700', indicator=0, signal='', change=0), Stock(date='2019-11-14', open='147.0200', high='148.4100', low='147.0000', close='148.0600', volume='19729800', indicator=0, signal='', change=0), Stock(date='2019-11-13', open='146.7400', high='147.4600', low='146.2800', close='147.3100', volume='16919200', indicator=0, signal='', change=0), Stock(date='2019-11-12', open='146.2800', high='147.5700', low='146.0600', close='147.0700', volume='18641600', indicator=0, signal='', change=0), Stock(date='2019-11-11', open='145.3400', high='146.4200', low='144.7300', close='146.1100', volume='14362600', indicator=0, signal='', change=0), Stock(date='2019-11-08', open='143.9800', high='145.9900', low='143.7600', close='145.9600', volume='16732700', indicator=0, signal='', change=0), Stock(date='2019-11-07', open='143.8400', high='144.8800', low='143.7700', close='144.2600', volume='17786700', indicator=0, signal='', change=0)]

Mam listę nazwanych krotek i chcę ją zindeksować na podstawie podanego zakresu dat. Na przykład, biorąc pod uwagę 2019-11-10 (data_początkowa) i 08.11.2019 (data końcowa), chcę zwrócić listę nazwanych krotek, która zawiera informacje tylko z tego zakresu dat. W jaki sposób mogę to zrobić? Dziękuję Ci

0
Phong Le 20 listopad 2019, 21:17

1 odpowiedź

Niesprawdzone, ale coś takiego:

from datetime import datetime

format = '%Y-%m-%d'
start = datetime.strptime('2019-11-08', format)
end = datetime.strptime('2019-11-10', format)

# concise version
output = filter(lambda tup: start < datetime.strptime(tup['date'], format) < end, your_list_of_tuples)

# verbose version
output = []
for tup in your_list_of_tuples:
  date = datetime.strptime(tup['date'], format)
  if start < date < end:
    output += date

Zwróć uwagę, że zacząłeś jako 10, a kończyłeś jako 8, co, jak założyłem, było literówką i przełączone. możesz także chcieć> = i <= do porównań.

0
Personman 20 listopad 2019, 21:31
Dziękuję, zrozumiałem to! Wystarczy trochę poprawić: tup.date i output.append(tup)
 – 
Phong Le
20 listopad 2019, 23:35
Fajny, cieszę się, że mogę pomóc. jeśli to zadziałało, zaakceptuj to jako odpowiedź, aby inni wiedzieli, że odpowiedź na pytanie została udzielona.
 – 
Personman
21 listopad 2019, 09:20