在数据预处理中,由于数据来源多源异构,因此对于数据格式的转换统一必不可少,而时间格式的转换统一更是其中尤为频繁的场景。因此本文总结了python中经常使用的几种转换方法。
1.使用time/datetime转换
1.1.time
-
将时间字符串转为time的结构化时间表示形式;
-
将结构化时间转为目标形式的时间字符串。
步骤1和步骤2都需要匹配字符串的形式,步骤1的中匹配形式与字符串形式必须一致,不一致则转换不成功,步骤2中匹配形式根据需要自己设置。
函数 | 参数 | 返回值 |
---|---|---|
time.strptime() | (string[,format]) | struct_time对象 |
time.strftime() | (format[, stuct_time]) | 字符串 |
import time
timestr ="2020-10-1 14:57:25"
timearray = time.strptime(timestr,"%Y-%m-%d %H:%M:%S")
print(time.strftime("%Y/%m/%d %I:%M:%S %p",timearray))
# 2020/10/01 2:57:25 PM
timestr ="2020/10/01 02:57:25 PM"
timearray = time.strptime(timestr,"%Y/%m/%d %I:%M:%S %p")
print(time.strftime("%Y-%m-%d",timearray))
# 2020-10-01
附: 日期格式化符号
时间 | 符号 | 详细 |
---|---|---|
年 | %y | 两位数的年份表示(00-99) |
年 | %Y | 四位数的年份表示(000-9999) |
月 | %m | 月份(01-12) |
月 | %b | 简化的月份名称( e g . ^{eg.} eg. Jan) |
月 | %B | 完整的月份名称( e g . ^{eg.} eg. January) |
日 | %d | 月内中的一天(0-31) |
时 | %H | 24小时制小时数(0-23) |
时 | %I | 12小时制小时数(01-12) |
分 | %M | 分钟数(00-59) |
秒 | %S | 秒(00-59) |
星期 | %a | 简化星期名称( e g . ^{eg.} eg. Sun) |
星期 | %A | 完整星期名称( e g . ^{eg.} eg. Sunday) |
上午/下午 | %p | 本地AM或PM的等价符 |
1.2.datetime
from datetime import datetime
timestr ="2020-10-1 14:57:25"
timearray = datetime.strptime(timestr,"%Y-%m-%d %H:%M:%S")
print(timearray.strftime("%Y/%m/%d %I:%M:%S %p"))
# 2020/10/01 2:57:25 PM
2.使用pandas转换
import pandas as pd
# data source, usually read from file or database
TimeList = ["10-1-2020","10-2-2020","10-3-2020","10-4-2020","10-5-2020","10-6-2020"]
TimeStrSeries = pd.Series(TimeList)
# if data form is dataframe(eg. df), use df["column_name"] as TimeStrSeries
TimeSeries = pd.to_datetime(TimeStrSeries,format="%m-%d-%Y")
NewTimeStrSeries = TimeSeries.dt.strftime("%Y/%m/%d")
print(NewTimeStrSeries)
# 0 2020/10/01
# 1 2020/10/02
# 2 2020/10/03
# 3 2020/10/04
# 4 2020/10/05
# 5 2020/10/06
更多内容欢迎参观我的个人站