我正在制作一个可以占用任何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日
答案 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 强>