Python-datetime库中datetime与numpy库中datetime的转换
作者:互联网
目前要用到pandas处理数据,在获取到日期时间的时候,默认是numpy.datetime64的。
但是这个类型,是无法直接获取到年月日的,所以弄起来特别麻烦。
所以,我们要把这个类型转换成 datetime库中的datetime!
在网上找了转换的方式,大都是这样的:
1、是直接使用 astype 转换
dt6 = dt1.astype(datetime.datetime) # 这里 dt1 就是 numpy.detatime64 的类型
print(dt6, type(dt6))
#打印结果
2019-07-16 00:00:00 <class 'datetime.datetime'>
2、先转换成timestamp,然后再转成datetime
dt7 = (dt1-np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's') #转成timestamp
dt8 = datetime.datetime.utcfromtimestamp(dt7) #转datetime
print(dt8, type(dt8))
#打印结果
/Users/guojicheng/Desktop/Python/3/Projects/DashCoffee/testApp.py:288:
DeprecationWarning: parsing timezone aware datetimes is deprecated; this will
raise an error in the future
dt7 = (dt1-np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')
2019-07-16 00:00:00 <class 'datetime.datetime'>
虽然都能实现,可以我在编辑器中,一直提示我报错:
确实有点忍不了,然后去谷歌搜索,发现了一个新的方式:
dt2 = pd.Timestamp(dt1) # 使用pandas里面的方法,转成pandas.timestamp类型
dt3 = datetime.datetime.utcfromtimestamp(dt2.timestamp()) #这是一种方式
print(dt3, type(dt3))
dt4 = dt2.to_pydatetime() # 这个最直接,还是调用他自己的方法
print(dt4, type(dt4))
# 所以只要这样就好了
dt2 = pd.Timestamp(dt1).to_pydatetime()
#打印结果
2019-07-16 00:00:00 <class 'datetime.datetime'>
2019-07-16 00:00:00 <class 'datetime.datetime'>
标签:00,07,Python,timestamp,datetime,2019,库中,dt1 来源: https://blog.csdn.net/pz789as/article/details/96126464