学习记录643@python之strptime和strftime日期转化操作案例

需求:将’Sep-2006’ 这种字符串日期格式转化为2006-09-01,且为datetime格式

import pandas as pd
import numpy as np
import time,datetime

# 时间日期转换
def trans_format(time_string, from_format, to_format='%Y.%m.%d'):
    # time_string 第一个参数默认为每个要处理的值,不用传参
    # from_format:原字符串的时间格式
    # to_format:转化后的时间格式 默认'%Y.%m.%d'
    if pd.isnull(time_string):
        return np.nan
    else:
        # 提取要处理的数据 转化为struct_time类型
        time_struct = time.strptime(time_string,from_format)
        # 将上面的struct_time类型的数据转化为目标日期格式的字符串
        times = time.strftime(to_format, time_struct)
        # 将目标日期的字符串转化为日期格式
        times = datetime.datetime.strptime(times,to_format)
        # 以下是将日期格式转化为字符串,times为datetime类型
        # times = times.strftime(to_format)
        return times

##时间格式转化
df = pd.DataFrame([['张三',23,'男','Sep-2006'],['李四1',27,'女', 'Sep-2009']],columns=['姓名','年龄','性别','日期'])
# args中传递的是除开函数的第一个参数外的其他参数,也就是'%b-%Y'对应from_format,'%Y-%m'对应to_format
# 而trans_format函数的第一个参数是默认的,就是每个要处理的值
df['日期1'] = df['日期'].apply(trans_format,args=('%b-%Y','%Y-%m'))
print(df)

# 字符串格式化参数列表:
'''
字符串格式化参数列表:
datetime. strftime (format)  
%a:  星期的简写。如 星期三为Web  
%A:  星期的全写。如 星期三为Wednesday  
%b:  月份的简写。如4月份为Apr  
%B:  月份的全写。如4月份为April   
%c:  日期时间的字符串表示。(如: 04/07/10 10:43:39)  
%d:  日在这个月中的天数(是这个月的第几天)  
%f:  微秒(范围[0,999999])  
%H:  小时(24小时制,[0, 23])  
%I:  小时(12小时制,[0, 11])  
%j:  日在年中的天数 [001,366](是当年的第几天)  
%m:  月份([01,12])  
%M:  分钟([00,59])  
%p:  AM或者PM  
%S:  秒(范围为[00,61],为什么不是[00, 59],参考python手册~_~)  
%U:  周在当年的周数当年的第几周),星期天作为周的第一天  
%w:  今天在这周的天数,范围为[0, 6],6表示星期天  
%W:  周在当年的周数(是当年的第几周),星期一作为周的第一天  
%x:  日期字符串(如:04/07/10)  
%X:  时间字符串(如:10:43:39)  
%y:  2个数字表示的年份  
%Y:  4个数字表示的年份  
%z:  与utc时间的间隔 (如果是本地时间,返回空字符串)  
%Z:  时区名称(如果是本地时间,返回空字符串)  
%%:  %% => %

'''

你可能感兴趣的:(python)