Python - 如何按dd-mmm-yy格式按日期对csv数据进行排序?

时间:2015-05-04 21:32:31

标签: python sorting date csv

我有大量的以下类型的.csv数据:

Red     11.1    12170612    137186880.5 01-Apr-14
pink    52.4    35139204    1902951951  01-Aug-11
yellow  18.45   15074808    281444556.8 01-Aug-12

如何按日期排序(上面的第5列)?

3 个答案:

答案 0 :(得分:0)

假设日期始终从第40列开始并运行到行尾,这将对您的数据进行排序:

with open('foo.in') as input_file:
    lines = input_file.readlines()
lines.sort(key=lambda x:datetime.datetime.strptime(x[40:-1], '%d-%b-%y'))

如果你有其他方法来隔离日期(总是第5个字段,总是持续9行的字符,无论如何),相应地调整lambda。

答案 1 :(得分:0)

您可以使用pandas:

import pandas as pd
data = pd.read_csv('date.csv', sep='\t', header=None)
data[4] = pd.to_datetime(data[4])
data.sort(4)

Out[2]:

    0       1       2            3              4
1   pink    52.40   35139204    1.902952e+09    2011-08-01
2   yellow  18.45   15074808    2.814446e+08    2012-08-01
0   Red     11.10   12170612    1.371869e+08    2014-04-01

其中'date.csv'是您在问题中发布的数据:

Red 11.1    12170612    137186880.5 01-Apr-14
pink    52.4    35139204    1902951951  01-Aug-11
yellow  18.45   15074808    281444556.8 01-Aug-12

答案 2 :(得分:0)

了解您的最新数据:

import numpy as np
import pandas as pd

your_data = [['pink', 9644921,'01-APR-2010','0'], ['yellow', 2243817504.85, '01-APR-2011','0'], ['pink', 223468, '01-APR-2013', '23891'], ['orange', 137186880.5, '01-APR-2014', '1'], ['yellow', 51950.8, '01-AUG-2011', '87674']]
aa = np.array(your_data)
data = pd.DataFrame(aa)
data[2] = pd.to_datetime(data[2])
data = data.sort(2)
print data

它会给出:

        0              1          2      3
0    pink        9644921 2010-04-01      0
1  yellow  2243817504.85 2011-04-01      0
4  yellow        51950.8 2011-08-01  87674
2    pink         223468 2013-04-01  23891
3  orange    137186880.5 2014-04-01      1