python开发中 日期与时间相关的操作总结
程序员文章站
2022-09-21 09:59:11
pd.to_datetime()最简单的使用形式pd.to_datetime(df['单据日期'])默认使用这个方法必须是 “年-月-日”“ 时-分-秒”的格式(这二者都有或者只包含任一个)固定用法#提取日期和时间,使用的时候直接赋值就行了df['单据日期'].dt.datedf['单据日期'].dt.time#提取年月日时分秒,可按需求生成对应列df['单据日期'].dt.yeardf['单据日期'].dt.monthdf['单据日期'].dt.daydf['单据日期']...
pd.to_datetime()
- 最简单的使用形式
pd.to_datetime(df['单据日期'])
默认使用这个方法必须是 “年-月-日”“ 时-分-秒”的格式(这二者都有或者只包含任一个)
- 固定用法
#提取日期和时间,使用的时候直接赋值就行了 df['单据日期'].dt.date
df['单据日期'].dt.time #提取年月日时分秒,可按需求生成对应列 df['单据日期'].dt.year
df['单据日期'].dt.month
df['单据日期'].dt.day
df['单据日期'].dt.hour
df['单据日期'].dt.minute #最后得到的是字符串型的数据
-
复杂的使用场景
若DataFrame中只有年、月、日、小时这样单独的列,且数据类型是数值型时,我们可以先将数值型数据转化为字符串型,然后用字符串拼接的方式拼出 “年-月-日”“ 时-分-秒”的格式,再用pd.to_datetime的方法。
- 数值型转化为字符串型
#数值型转化为字符串型 df_new['year'] = df_new['year'].apply(str) df_new['month'] = df_new['month'].apply(str) df_new['day'] = df_new['day'].apply(str) df_new['hour'] = df_new['hour'].apply(str)
-
合并字符串
单个字符串的操作方法在DataFrame列与列之间也可以直接使用
df_new["时间"]=df_new['year']+'-'+df_new['month']+'-'+df_new['day']+' '+df_new['hour']+':'+'00'+":"+'00'
- pd.to_datetime
df_new['时间']=pd.DataFrame(pd.to_datetime(df_new['时间']))
-
注意
日期时间格式虽然进行相关的时间操作非常方便,但日期格式不能进行相关性分析,这是一个弊端
获取月份第一天和最后一天
from datetime import datetime import calendar def getMonthFirstDayAndLastDay(year=None, month=None): """
:param year: 年份,默认是本年,可传int或str类型
:param month: 月份,默认是本月,可传int或str类型
:return: firstDay: 当月的第一天,datetime.date类型
lastDay: 当月的最后一天,datetime.date类型
""" if year: year = int(year) else: year = datetime.now().year if month: month = int(month) else: month = datetime.now().month # 获取当月第一天的星期和当月的总天数 firstDayWeekDay, monthRange = calendar.monthrange(year, month) # 获取当月的第一天 firstDay = datetime.date(datetime(year=year, month=month, day=1)) lastDay = datetime.date(datetime(year=year, month=month, day=monthRange)) return firstDay, lastDay
这个函数默认返回一个元组,可以通过切片获取自己需要的信息
获取两个日期之间的月份差
#获取两个日期之间的月份差 from datetime import datetime def months_sub(str1,str2): #这里输入的日期格式是"%Y%m%d" year1=datetime.strptime(str1[0:8],"%Y%m%d").year
year2=datetime.strptime(str2[0:8],"%Y%m%d").year
month1=datetime.strptime(str1[0:8],"%Y%m%d").month
month2=datetime.strptime(str2[0:8],"%Y%m%d").month
num=(year1-year2)*12+(month1-month2) return num #我们当然可以对输入的日期格式进行调整,比如输入"%Y-%m-%d",但相应的字符串的切片就要变成[0:10]
月份相加减
from datetime import datetime from dateutil.relativedelta import relativedelta (datetime(2019,1,12) + relativedelta(3)).strftime('%Y%m%d') #月份的加减可以作用到年份上,实现跨年的功能
获取周数
Year_week_day = pd.DataFrame(map(lambda x: x.isocalendar(),df['日期']),columns=['年号','第几周','第几天']) Year_week_day
时间型与字符串型的相互转化
- 时间型转变为字符串
# 方法一 str(datetime(2011, 1, 3)) # 方法二 datetime(2011, 1, 3).strftime('%Y-%m-%d') # 在表格中的操作 df['时间'] = df['时间'].apply(lambda x: x.strftime('%Y-%m-%d'))
- 字符串转变成时间型
# 方法一 value = '2011-01-03' datetime.strptime(value, '%Y-%m-%d') #'%Y-%m-%d'是用来解析'2011-01-03'的各部分意味着什么 # 方法二 from dateutil.parser import parse
parse('2011-01-03') # 方法三 pd.to_datetime('2020-05-07')
本文地址:https://blog.csdn.net/Bing_yu_Forever/article/details/108239590
推荐阅读
-
在Python中操作日期和时间之gmtime()方法的使用
-
Java8中操作日期时间相关的API
-
Python中时间datetime的处理与转换用法总结
-
整理总结 python 中时间日期类数据处理与类型转换(含 pandas)
-
Python中时间datetime的处理与转换用法总结
-
在Python中操作日期和时间之gmtime()方法的使用
-
python中关于时间和日期函数的常用计算总结(time和datatime)
-
python开发中 日期与时间相关的操作总结
-
整理总结 python 中时间日期类数据处理与类型转换(含 pandas)
-
在Python中操作日期和时间之gmtime()方法的使用