簡體   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