我有一列包含此格式的数据(本质上是一个字符串):
21 apr 2015
我需要分析此列,其中包含多个项目,并输出为日期格式,例如:
dd/mm/yyyy
在python中,我看到了很多示例,但是它总是处理“某种”格式的日期,如您所见,它们实际上不是格式的,那么如何实现呢?
虽然我不能使用pandas
。
我看过这样的例子:
string_date = "2013-09-28 20:30:55.78200"
datetime.datetime.strptime(string_date, "%Y-%m-%d %H:%M:%S.%f")
但是,这处理的是字符串,格式为“某些”。
对此有什么想法吗?
答案 0 :(得分:1)
使用datetime
库,您可以分两个步骤进行处理。首先,调用strptime
将您输入的文本日期21 apr 2015
转换为真正的Python datetime
。然后,要生成格式为%d/%m/%Y
的另一个日期字符串,请调用strftime
:
inp = "21 apr 2015"
out = datetime.strptime(inp, "%d %b %Y")
print(out.strftime("%d/%m/%Y"))
此打印:
21/04/2015
答案 1 :(得分:1)
您可以使用strptime创建一个返回所需格式的函数 和strftime进行格式化
from datetime import datetime
def convert_csv_date(csv_date):
return datetime.strptime(csv_date, "%d %b %Y").strftime("%d/%m/%Y")
csv_date="21 apr 2015"
In [492]: convert_csv_date(csv_date)
Out[492]: '21/04/2015'
更新:这是一个完整的程序,该程序以日期格式将数据写入csv文件,然后使用convert_csv_date更新数据并编写一个新文件进行比较。我希望这会有所帮助(您可能必须更改文件目录名称,我使用了/ tmp):
import csv
from datetime import datetime
def convert_csv_date(csv_date):
return datetime.strptime(csv_date, "%d %b %Y").strftime("%d/%m/%Y")
lines = [['Vacation_Days', 'Date'],
['New Years', '01 jan 2019'],
['Labor Day', '02 sep 2019'],
['Thanksgiving', '24 nov 2019']]
with open('/tmp/output.csv', 'w') as writer:
fd = csv.writer(writer)
fd.writerows(lines)
r = csv.reader(open('/tmp/output.csv')) # Here's a sample date csv file
lines = list(r)
for item in lines[1:]:
item[1] = convert_csv_date(str(item[1]))
print(lines)
with open('/tmp/output_test.csv', 'w') as writer:
fd = csv.writer(writer)
fd.writerows(lines)