我有大量的以下类型的.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列)?
答案 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