在Python中格式化和排序日期和时间

时间:2016-02-15 20:45:25

标签: python sorting date time format

我将csv文件导入Python,它看起来像

ric       date           time       price
VOD   01-AUG-2013     8:08:53.241    156
VOD   03-JAN-2013     8:25:43.241    129
VOD   07-MAR-2013     8:03:31.241    128
VOD   18-AUG-2013     8:18:53.241    120
...     ...              ...         ...

我需要按date排序此文件,然后按time从最旧到最新排序。 但是,我必须首先格式化datetime。但我不知道该怎么做。我厌倦了首先格式化date,但它确实有效。

我的代码是:

import pandas as pd
import time
import datetime
from datetime import datetime

path = 'C:\\sample.csv'

data= pd.read_csv(path)
sorted(data, key=lambda each_dict: datetime.strptime(each_dict['date'], '%d-%b-%y'))

有人可以帮助我对datetime进行格式化和排序吗?谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用以下格式将日期和时间转换为datetime对象:

时间:

'%H:%M:%S.%f'

约会:

'%d-%b-%Y'

并使用一个元组,其第一项是日期,第二项是时间:

sorted(data,
       key=lambda each_dict: (datetime.strptime(each_dict['date'], '%d-%b-%Y'),
                              datetime.strptime(each_dict['time'], '%H:%M:%S.%f'))

答案 1 :(得分:0)

尝试pandas,你会爱上它:

from __future__ import print_function

import pandas as pd

df = pd.read_csv('data.csv', delimiter=r'\s+')
df['date'] = pd.to_datetime(df['date'] + ' ' + df['time'])
del df['time']
print(df.sort(['date'], ascending=[0]).to_string(index=False))

输出:

 ric                    date  price
 VOD 2013-08-18 08:18:53.241    120
 VOD 2013-08-01 08:08:53.241    156
 VOD 2013-03-07 08:03:31.241    128
 VOD 2013-01-03 08:25:43.241    129