python 2.7如何读入日期

python 2.7如何读入日期,python,python-2.7,datetime-select,Python,Python 2.7,Datetime Select,我有一个python 2.7的问题 我的数据格式如下。(这是股市数据) 数据名为finallist,是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.2

我有一个python 2.7的问题

我的数据格式如下。(这是股市数据) 数据名为finallist,是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']]
我试图按列表的第二列进行排序,但要确保程序理解值是日期

我尝试了以下方法,但不起作用


导入日期时间
导入时间
sort(key=lambda finallist:datetime.strtime(finallist[0][0][1],“%d-%b-%y”))

它应该按日期对列表进行排序,将每个日期作为一个日期读取,但它不这样做。有人能提供一些关于如何做到这一点的想法吗?抱歉,如果这是重复,但我看了几个其他的例子在网上,但似乎没有工作或匹配我的情况


提前谢谢。

您基本上只需要

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])

你基本上只需要

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])

应该是这样的:

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']]

应该是这样的:

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']]

谢谢你的调整效果很好。为什么需要datetime x2?我需要再次使用日期,因此我将在下一步尝试您的第二个解决方案。第二个解决方案是否允许我计算日期之间的差异?谢谢!你的调整效果很好。为什么需要datetime x2?我需要再次使用日期,因此我将在下一步尝试您的第二个解决方案。第二个解决方案是否允许我计算日期之间的差异?