简体   繁体   English

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

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

I am making a generic tool which can take up any csv file.I have a csv file which looks something like this. 我正在制作一个可以占用任何csv文件的通用工具。我有一个看起来像这样的csv文件。 The first row is the column name and the second row is the type of variable. 第一行是列名,第二行是变量的类型。 sam.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

Other CSV file looks like: 其他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

So, there could be any date format or it could be a time stamp.I want to convert it to "20-May-13" or "%d-%b-%y" format string everytime and sort the column from oldest date to the newest date. 因此,可能有任何日期格式,也可能是时间戳。我想每次都将其转换为“ 20-May-13”或“%d-%b-%y”格式字符串,并按最早的日期对列进行排序到最新日期。 I have been able to search the column name where the type is "temp" and try to convert it to the required format but all the methods require me to specify the original format which is not possible in my case. 我已经能够搜索类型为“ temp”的列名,并尝试将其转换为所需的格式,但是所有方法都要求我指定原始格式,这在我的情况下是不可能的。 Code-- import csv import time from datetime import datetime,date import pandas as pd import dateutil from dateutil.parser import parse 代码-从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"))

In "sam.csv", the dates are in 2013. But in my output it gives the correct format but all the 6 dates as 2-Mar-2018 在“ sam.csv”中,日期为2013年。但是在我的输出中,它给出了正确的格式,但所有6个日期均为2018年3月2日

You can use the dateutil library for converting any date format to your required format. 您可以使用dateutil库将任何日期格式转换为所需的格式。

Ex: 例如:

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

Output: 输出:

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 Dateutil上的更多信息

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

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