将任何日期字符串格式转换为特定的日期格式字符串

时间:2018-03-21 06:23:02

标签: python sorting parsing datetime datetime-format

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

var box1 = document.querySelector('.box-1');
var s1 = box1.parentNode;

s1.appendChild(box1);

其他CSV文件如下:

Time,M1,M2,M3,CityName
temp,num,num,num,city
20-06-13,19,20,0,aligarh
20-02-13,25,42,7,agra
20-03-13,23,35,4,aligarh
20-03-13,21,32,3,allahabad
20-03-13,17,27,1,aligarh
20-02-13,16,40,5,aligarh

所以,可能有任何日期格式或者它可能是时间戳。我想每次将其转换为“20-May-13”或“%d-%b-%y”格式字符串并对列进行排序从最早的日期到最新的日期。我已经能够搜索类型为“temp”的列名,并尝试将其转换为所需的格式,但所有方法都要求我指定原始格式,这在我的情况下是不可能的。     码 -     导入csv 进口时间 从datetime导入日期时间,日期 将pandas导入为pd import dateutil 来自dateutil.parser导入解析

Time,M1,M2,M3,CityName
temp,num,num,num,city
20/8/16,789,300,10,new york
12/6/17,464,67,23,delhi
12/6/17,904,98,78,delhi

在“sam.csv”中,日期是在2013年。但在我的输出中它给出了正确的格式,但所有6个日期都是2018年3月2日

1 个答案:

答案 0 :(得分:1)

您可以使用 dateutil 库将任何日期格式转换为所需格式。

例如:

import csv
from dateutil.parser import parse
p = "PATH_TO_YOUR_CSV.csv"      #I have used your sample data to test. 

with open(p, "r") as infile:
    reader = csv.reader(infile)
    next(reader)     #Skip Header
    next(reader)     #Skip Header
    for line in reader:
        print(parse(line[0]).strftime("%d-%B-%y"))    #Parse Date and convert it to date-month-year

<强>输出:

20-June-13
20-February-13
20-March-13
20-March-13
20-March-13
20-February-13
20-August-16
06-December-17
06-December-17

<强> MoreInfo on Dateutil