Python DataFrame 字符串日期转换为日期对象的两种方法
本文介绍在Python中将DataFrame字符串列转换为日期类型的两种常用方法。首先讲解使用pd.to_datetime函数的简洁实现,其次深入解析利用datetime模块中strptime和strftime函数进行格式匹配转换的技巧。重点强调格式字符串必须与原数据完全一致,否则会导致转换失败。
使用pd.to_datetime直接转换
方法一:这是最简便的处理方式。
直接调用pd.to_datetime函数即可完成转换操作。
data['交易时间'] = pd.to_datetime(data['交易时间'])
使用datetime模块进行格式匹配转换
方法二:
该思路源自《利用Python进行数据分析》第304页的内容。
需要借助Python标准库datetime模块中的
strptime函数,具体调用方式为datetime.strptime(value,'%Y/%M/%D')。
同时涉及strftime函数,其调用形式为datetime.strftime('%Y/%M/%D')。
需要注意的是,使用datetime模块进行转换时,后续指定的字符串格式必须与原字符串的实际格式保持一致,这样才能正确解析。例如,若原始数据为yyyy-mm-dd格式,则必须使用'%Y-%M-%D'进行匹配,而不能使用'%Y/%M/%D'。
data['交易时间']=data['交易时间'].apply(lambda x:datetime.strptime(x,'%Y-%m-%d %H:%M:%S'))
观察上述代码中的'%Y-%m-%d %H:%M:%S'部分。
这里的格式字符串必须与原数值的格式完全一致才能成功转换。如果原始数据包含精确到时分秒的信息,而此处未指定%H:%M:%S,则无法完成转换。这一点务必牢记。
'''
获取指定日期的上个月
日期字符串和日期格式
'''
def getLastMonth(dtstr,dateformat):
d=datetime.strptime(dtstr, dateformat).date()
year = d.year
month = d.month
if month == 1 :#如果是本年1月的
month = 12
year -= 1
else :#如果是大于1月的
month -= 1
return (datetime(year,month,1)).strftime(dateformat)
'''
两个日期之间相差的月数
包括开始日期和结束日期的当天
日期字符串和日期格式
'''
def diffMonth(startDate,endDate,dateformat):
start=datetime.strptime(startDate, dateformat).date()
end=datetime.strptime(endDate, dateformat).date()
startYear=start.year
startMonth=start.month
endYear=end.year
endMonth=end.month
#如果是同年
if startYear==endYear:
diffmonths=endMonth-startMonth
#如果是上年
elif endYear-startYear==1:
diffmonths=12+endMonth-startMonth
#如果是大于1年
elif endYear-startYear>1:
years=endYear-startYear
diffmonths=(years-1)*12+12+endMonth-startMonth
#如果开始日期大约结束日期报错
elif endYear-startYear<0 or( endYear==startYear and endMonth-startMonth):
print 'enddate must greater than startdate'
return int(diffmonths+1)
以上内容为本文的全部介绍,希望对读者的学习有所帮助,同时也欢迎大家继续支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













