根据日期对CSV文件进行排序

时间:2018-03-24 07:05:15

标签: python csv sorting date

我正在制作一个可以占用任何csv文件的通用工具。我有一个看起来像这样的csv文件。第一行是列名,第二行是变量类型。

Time,M1,M2,M3,CityName
temp,num,num,num,city
20-May-15,19,20,0,aligarh
03-Sep-14,25,42,7,agra
20-Jan-13,23,35,4,aligarh
20-Feb-15,21,32,3,allahabad
12-May-16,17,27,1,aligarh
25-May-16,16,40,5,aligarh

我想在Python中根据日期(最旧到最新)对整个文件进行排序,但是找不到出路。

2 个答案:

答案 0 :(得分:3)

我认为pandas应该有所帮助 - 首先将MultiIndex的第一个和第二个csv标头转换为header=[0,1],并将第一列解析为日期时间,最后sort_values

df = pd.read_csv(file, header=[0,1], parse_dates=[0])
df = df.sort_values(('Time','temp'))
#sort by first column
#df = df.sort_values(df.columns[0])
print (df)
        Time  M1  M2  M3   CityName
        temp num num num       city
2 2013-01-20  23  35   4    aligarh
1 2014-09-03  25  42   7       agra
3 2015-02-20  21  32   3  allahabad
0 2015-05-20  19  20   0    aligarh
4 2016-05-12  17  27   1    aligarh
5 2016-05-25  16  40   5    aligarh

答案 1 :(得分:1)

>>> df = pd.read_csv('t.csv',skiprows=[1]) 
>>> df.Time = pd.to_datetime((df.Time))
>>> df.sort_values(by='Time')

        Time  M1  M2  M3   CityName
2 2013-01-20  23  35   4    aligarh
1 2014-09-03  25  42   7       agra
3 2015-02-20  21  32   3  allahabad
0 2015-05-20  19  20   0    aligarh
4 2016-05-12  17  27   1    aligarh
5 2016-05-25  16  40   5    aligarh