繁体   English   中英

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

[英]Convert any Date String Format to a specific date format string

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

其他CSV文件如下所示:

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

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

filename = 'sam.csv'
data_date = pd.read_csv(filename)
column_name = data_date.ix[:, data_date.loc[0] == "temp"]
column_work = column_name.iloc[1:]
column_some = column_work.iloc[:,0]
default_date = datetime.combine(date.today(), datetime.min.time()).replace(day=1)
for line in column_some:
        print(parse(line[0], default=default_date).strftime("%d-%b-%y"))

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

您可以使用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

Dateutil上的更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM