pandas实现datetime64与unix时间戳互转

 更新时间:2022年07月16日 09:43:56   作者:Bruce-XIAO  
这篇文章主要介绍了pandas实现datetime64与unix时间戳互转,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

datetime64与unix时间戳互转

在用pandas处理数据时,经常要处理一些时间类型数据,经常把pandas时间类型与datetime模块,还有python自带的time模块搞混淆,记录之。

unix 时间戳与pandas中的Timestamp互转

import time
def unixToTime(unixtime):
    return pd.to_datetime(unixtime,unit='s',utc=True).tz_convert('Asia/Shanghai') #utc时间比上海时间少8小时,做时区转换
 
def timeToUnix(dt64):
    return dt64.astype('datetime64[s]').astype('int')
 
unixtime = 1514737265
print(unixToTime(unixtime))
 
#python 自带time模块的local_time可以直接转北京时间
struct_time = time.localtime(unixtime)
print(struct_time)
#转化格式
dd = time.strftime("%Y-%m-%d %H:%M:%S",struct_time)
print(dd)

输出:

2018-01-01 00:21:05+08:00
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=21, tm_sec=5, tm_wday=0, tm_yday=1, tm_isdst=0)
2018-01-01 00:21:05

datetime模块

python中还有一个datetime模块,这个模块包含一些函数,如today,now,fromtimestamp,strptime,Datetime

from datetime import datetime
import pandas as pd
startTime = datetime.now()
print(startTime)
print(type(startTime))
 
#datetime 字符串转时间戳
timestr = '2018-01-01 00:21:05'
date_time = datetime.strptime(timestr, "%Y-%m-%d %H:%M:%S")
print(type(date_time))
print(date_time)

输出:

2020-12-16 22:22:42.451086
<class 'datetime.datetime'>

#pandas 字符串转时间戳
pd_time = pd.to_datetime(time,format="%Y-%m-%d %H:%M:%S")
 
#或者
#time = datetime(2018,1,1,0,21,5)
#pd_time = pd.to_datetime(timestr,format="YYYY-MM-DD HH:MM:SS")
 
print(type(pd_time))
print(pd_time)

输出:

<class 'datetime.datetime'>
2018-01-01 00:21:05

#取到年,月,日,日期,小时,分钟,秒以及一周中的第几天
year = pd_time.year
month =  pd_time.month
day = pd_time.day
date =  pd_time.date
hour =  pd_time.hour
minute =  pd_time.minute
seconds =  pd_time.second
print(year)
print(month)
print(day)
print(hour)
print(minute)
print(seconds)

输出:

2018
1
1
0
21
5

pandas默认时间格式转换为unix间戳

Pandas读取csv文件时,时间会自动显示为‘YYYY-MM-DD HH:MM:SS’的格式,那么如果想要将这个时间转换为 Unix时间戳 呢?

先科普一下,什么是 Unix时间戳 呢?

Unix时间戳 是一种时间表示方式,是一个整型值,代表从格林威治时间1970年01月01日00时00分00秒起至现在经过的总秒数。

举个栗子

一个值为 1492751843 的Unix时间戳 ==>

把它转换为 北京时间为 2017/4/21 13:17:23

实际上,Pandas中时间用 pandas.datetime() 转换为 pandas.tslib.Timestamp(时间戳) 格式之后,已经变成了整型存储,即 Unix时间戳形式 。

如果我们需要这个时间戳的整型格式,可以用 time[0].value 这个属性把它提取出来。

样例

>>> import pandas as pd     # 导入pandas库
>>> data = pd.read_csv('airquality.csv')        # 读入数据文件
>>> data.time = pd.to_datetime(data.time)   # 将时间那一列从str转换为时间戳格式
>>> type(data.time[0])      # 查看转换之后的格式
<class 'pandas.tslib.Timestamp'>
>>> data.time[0]            # 查看第一条数据,默认显示为‘YYYY-MM-DD HH:MM:SS'格式
Timestamp('2014-05-01 00:00:00')
>>> data.time[0].value  # 查看第一条数据的Unix时间戳格式
1398902400000000000L
>>> data.time[0].value//10**9   # 转换为秒级
1398902400L
>>> t1 = [t.value for t in data.time]   # 提取整列(纳秒级,即1s = 1,000,000,000 ns)
>>> t1[:3]      # 显示前三条数据
[1398902400000000000L, 1398906000000000000L, 1398909600000000000L]
>>> t2 = [t.value//10**9 for t in data.time]    # 提取整列(秒级)
>>> t2[:3]      # 显示前三条数据
[1398902400L, 1398906000L, 1398909600L]
>>> t1 = pd.DatetimeIndex(t1)       # 从list列表转换为pandas的DatetimeIndex格式
>>> t1[:3]      # 显示前三条数据
DatetimeIndex(['2014-05-01 00:00:00', '2014-05-01 01:00:00',
               '2014-05-01 02:00:00'],
              dtype='datetime64[ns]', freq=None)
>>> type(t1[0])     # 每条数据为Timestamp格式
<class 'pandas.tslib.Timestamp'>
>>> t1[0].value
1398902400000000000L

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • django最快程序开发流程详解

    django最快程序开发流程详解

    这篇文章主要介绍了django最快程序开发流程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 浅谈python已知元素,获取元素索引(numpy,pandas)

    浅谈python已知元素,获取元素索引(numpy,pandas)

    今天小编就为大家分享一篇浅谈python已知元素,获取元素索引(numpy,pandas),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • python实现k均值算法示例(k均值聚类算法)

    python实现k均值算法示例(k均值聚类算法)

    这篇文章主要介绍了python实现k均值算法示例,简单实现平面的点K均值分析,使用欧几里得距离,并用pylab展示,需要的朋友可以参考下
    2014-03-03
  • Python网络爬虫信息提取mooc代码实例

    Python网络爬虫信息提取mooc代码实例

    这篇文章主要介绍了python网络爬虫与信息提取mooc,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • python删掉重复行之drop_duplicates()用法示例

    python删掉重复行之drop_duplicates()用法示例

    Pandas的drop_duplicates()方法用于从DataFrame中删除重复的行,这篇文章主要给大家介绍了关于python删掉重复行之drop_duplicates()用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • 使用python接入微信聊天机器人

    使用python接入微信聊天机器人

    这篇文章主要为大家详细介绍了使用python接入微信聊天机器人,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • Python必备技巧之集合Set的使用

    Python必备技巧之集合Set的使用

    在数学中,对集合的严格定义可能是抽象的且难以掌握。但实际上可以将集合简单地认为是定义明确的不同对象的集合,通常称为元素或成员。Python 提供了一个内置的集合类型来将对象分组到一个集合中,快跟随小编一起学习一下吧
    2022-03-03
  • Python轻量级ORM框架Peewee访问sqlite数据库的方法详解

    Python轻量级ORM框架Peewee访问sqlite数据库的方法详解

    这篇文章主要介绍了Python轻量级ORM框架Peewee访问sqlite数据库的方法,结合实例形式较为详细的分析了ORM框架的概念、功能及peewee的安装、使用及操作sqlite数据库的方法,需要的朋友可以参考下
    2017-07-07
  • 500行Python代码打造刷脸考勤系统

    500行Python代码打造刷脸考勤系统

    本文给大家分享通过500行Python代码打造刷脸考勤系统,代码超级简单,感兴趣的朋友跟随小编一起看看吧
    2019-06-06
  • python脚本开机自启的实现方法

    python脚本开机自启的实现方法

    今天小编就为大家分享一篇python脚本开机自启的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06

最新评论