python中的时间相关操作

本文介绍了在Python中使用pandas库进行时间类型数据转换的方法,包括`pd.to_datetime`和`strftime`函数在字符串与时间格式间转换,以及如何处理空数据和提取时间属性(如年、月、日、小时等)。示例代码详细展示了转换过程。
摘要由CSDN通过智能技术生成

在python处理时间类型数据时,经常需要在时间,字符串类型中来回转换。
在实际业务场景中,本人时常会用到以下几个时间类型相关的函数:
1、字符型格式转为时间格式
①pd.to_datetime(arg,format)
该函数是pandas模块下,该函数可以将字符型的时间数据转换为datetime时间型数据。
②strptime(arg,format)
dataframe数据常和apply()函数结合来转化时间类型(series不能直接运用strptime来转换格式)
③注:
当利用pandas读取的series数据存在空数据时,需要使用try······except处理
![在这里插入图片描述](https://img-blog.csdnimg.cn/ee78126695ac450893330209dc71caad.png

da['时间2']=pd.to_datetime(da['时间1'],format='%Y-%m-%d')
da['时间3']=pd.to_datetime(da['时间1'])
da['时间4']=da['时间1'].apply(lambda x:datetime.datetime.strptime(x,'%Y-%m-%d'))
da['时间5']=datetime.datetime.strptime(da['时间1'],'%Y-%m-%d')

①尝试解决空数据问题
try:
    da['确认']=pd.to_datetime(da['品牌确认时间'],format='%Y-%m-%d %Y-%M-%S')
except ValueError:
    print('有空数据,无法转换')

在这里插入图片描述
2、时间格式转字符串
①x.strftime(‘格式’)
用于将时间格式转换为字符串形式(不能直接转换series格式,可与apply()函数结合)。

da['时间7']=da['时间2'].apply(lambda x:x.strftime('%Y-%m-%d'))
da['时间8']=

3、将datetime格式()时间转换为字符串形式
在这里插入图片描述
在这里插入图片描述

#思路:若为字符串转则首先利用to_datetime()将上传时间转换为datetime格式,最后使用dt.strftime()将转换后的datetime数据格式化为相应格式。
da['上传时间1']=pd.to_datetime(da['上传时间'].dt.strftime('%Y-%m-%d'))
da['上传时间2']=da['上传时间'].dt.strftime('%Y-%m-%d')

4、其它常见用法:

data=pd.DataFrame()
data["创建时间"]=pd.to_datetime(df)          # 将数据转换为时间类型
data["创建日期"]=data["创建时间"].dt.date    # 获取日期(Y%-M%-D%)
data["创建年份"]=data["创建时间"].dt.year    # 获取年份
data["创建月份"]=data["创建时间"].dt.month   # 获取月份
data["创建天数"]=data["创建时间"].dt.day     # 获取多少号
data["创建时间段"]=data["创建时间"].dt.hour  # 获取小时数
data["创建周"]=data["创建时间"].dt.isocalendar().week  # 获取星期数
data["创建星期"]=data["创建时间"].dt.weekday.map({0:"星期一",1:"星期二",2:"星期三",\
    3:"星期四",4:"星期五",5:"星期六",6:"星期日"})  # 获取星期几(0~6分别代表星期一~星期日)

# isocalendar()函数:
# 返回日期的year(年份),week(周数),day(星期几)三个指标
da=pd.DataFrame()
da["创建时间"]=pd.to_datetime(df)
da["创建时间"].dt.isocalendar()
da["年份"]=da["创建时间"].dt.isocalendar().year
da["周数"]=da["创建时间"].dt.isocalendar().week
da["星期"]=da["创建时间"].dt.isocalendar().day.map({1:"星期一",2:"星期二",3:"星期三",\
    4:"星期四",5:"星期五",6:"星期六",7:"星期日"})   # (1~7分别代表星期一~星期日)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钢蛋小黑娃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值