字符串时间与datetime对象互相转换
- 普通字符串==>>datetime对象
strptime 格式要对应
parser.parse 格式自由 - datetime对象==>>普通字符串
strftime
from dateutil import parser
import datetime
time_string='Thu Dec 22 12:40:25 2019'# 'Thu Dec 22 10:35:25 2019',这里可以是任意的时间格式
##普通字符串==>>datetime对象
datetime_obj = parser.parse(time_string)
print(type(datetime_obj))# <type 'datetime.datetime'>
##datetime对象==>>普通字符串
time_string1=datetime_obj.strftime('%Y-%m-%d %H:%M:%S')#datetime对象->>字符串
print(time_string1) # 2019-12-22 12:40:25
time_string2=datetime_obj.strftime('%Y-%m-%d')#datetime对象->>字符串
print(time_string2)# 2019-12-22
##普通字符串==>>datetime对象这种方法的格式要求对应,不如第一种利用parser.parse方便
datime_obj1=datetime.datetime.strptime(time_string1, '%Y-%m-%d %H:%M:%S')
print(datime_obj1)#2019-12-22 12:40:25
print(type(datime_obj1))#<class 'datetime.datetime'>
在pandas中转换
- 普通字符串==>>datetime对象
可以直接使用 pd.to_datetime将时间列的字符串设置为datetime类型
order_data['start_time'] = pd.to_datetime(order_data['start_time'], format="%Y-%m-%d %H:%M:%S")
datetime有很多属性可以获得有用的信息
order_data['Year'] = order_data['start_time'].dt.year
order_data['Month'] = order_data['start_time'].dt.month
order_data['MonthDayNum'] = order_data['start_time'].dt.day
order_data['DayOfWeek'] = order_data['start_time'].dt.day_name()
order_data['HourOfDay'] = order_data['start_time'].dt.hour
order_data['MinuteOfHour'] = order_data['start_time'].dt.minute
利用apply进行前面的转换,则pd.to_datetime等价于下面表达
order_data['start_time'] =order_data['start_time'].apply(lambda x :parser.parse(x))
- datetime对象==>>普通字符串
利用apply和strftime
data['md'] =data['start_time'].apply(lambda x: x.strftime('%m-%d'))