编程语言
首页 > 编程语言> > Python-datetime库中datetime与numpy库中datetime的转换

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