python 2.7 как читать по датам - PullRequest
0 голосов
/ 08 октября 2018

У меня вопрос по Python 2.7

Мои данные имеют следующий формат.(это данные фондового рынка). Имя данных является финалистом и представляет собой список на языке Python.

[['AGGP', '15-Mar-18', '19.22', '19.25', '19.2', '19.23', '26800\n'],
 ['AGGY', '15-Mar-18', '49.17', '49.18', '49.09', '49.16', '42500\n'],
 ['AGQ', '15-Mar-18', '31.6', '31.605', '31.27', '31.3', '112900\n'],
 ['AGT', '15-Mar-18', '31.83', '31.83', '31.81', '31.81', '2600\n'],
 ['AADR', '6-Mar-18', '60.4', '60.58', '60.17', '60.4', '18200\n'],
 ['AAMC', '6-Mar-18', '65.2', '65.2', '65.2', '65.2', '100\n'],    
 ['AAU', '6-Mar-18', '0.89', '0.9', '0.86', '0.87', '147500\n'],
 ['ABE', '6-Mar-18', '15.17', '15.29', '15.12', '15.2', '13700\n']]

Я пытаюсь отсортировать по 2-му столбцу списка, но убедитесь, что программа понимает значения.свидание.

Я пробовал следующее, и оно не работает.

import datetime import time finallist.sort(key=lambda finallist: datetime.strptime(finallist[0][0][1] , '%d-%b-%y'))

Должен сортировать список по датам, считывая каждую дату как дату, но это не так,Может ли кто-нибудь предложить какие-либо мысли о том, как это сделать?Извиняюсь, если это повторяется, но я просмотрел несколько других примеров в сети, но ни один из них, похоже, не работал или не соответствовал моей ситуации.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Это должно выглядеть так:

from datetime import datetime

sorted(finallist, key=lambda x: datetime.strptime(x[1], '%d-%b-%y'))

#[['AADR', '6-Mar-18', '60.4', '60.58', '60.17', '60.4', '18200\n'],
# ['AAMC', '6-Mar-18', '65.2', '65.2', '65.2', '65.2', '100\n'],
# ['AAU', '6-Mar-18', '0.89', '0.9', '0.86', '0.87', '147500\n'],
# ['ABE', '6-Mar-18', '15.17', '15.29', '15.12', '15.2', '13700\n'],
# ['AGGP', '15-Mar-18', '19.22', '19.25', '19.2', '19.23', '26800\n'],
# ['AGGY', '15-Mar-18', '49.17', '49.18', '49.09', '49.16', '42500\n'],
# ['AGQ', '15-Mar-18', '31.6', '31.605', '31.27', '31.3', '112900\n'],
# ['AGT', '15-Mar-18', '31.83', '31.83', '31.81', '31.81', '2600\n']]
0 голосов
/ 08 октября 2018

В основном вам просто понадобится

import datetime
finallist.sort(key=lambda row: datetime.datetime.strptime(row[1], '%d-%b-%y'))

, но другой подход, который полезен, если вам требуется дополнительная обработка данных, заключается в предварительной обработке даты и времени:

import datetime

data = [
    ["AGGP", "15-Mar-18", "19.22", "19.25", "19.2", "19.23", "26800\n"],
    ["AGGY", "15-Mar-18", "49.17", "49.18", "49.09", "49.16", "42500\n"],
    ["AGQ", "15-Mar-18", "31.6", "31.605", "31.27", "31.3", "112900\n"],
    ["AGT", "15-Mar-18", "31.83", "31.83", "31.81", "31.81", "2600\n"],
    ["AADR", "6-Mar-18", "60.4", "60.58", "60.17", "60.4", "18200\n"],
    ["AAMC", "6-Mar-18", "65.2", "65.2", "65.2", "65.2", "100\n"],
    ["AAU", "6-Mar-18", "0.89", "0.9", "0.86", "0.87", "147500\n"],
    ["ABE", "6-Mar-18", "15.17", "15.29", "15.12", "15.2", "13700\n"],
]

for datum in data:
    datum[1] = datetime.datetime.strptime(datum[1], "%d-%b-%y")

data.sort(key=lambda datum: datum[1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...