pandas实现datetime64与unix时间戳互转
作者:Bruce-XIAO 发布时间:2022-10-28 18:59:11
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
来源:https://blog.csdn.net/CCSUXWZ/article/details/111303823


猜你喜欢
- MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维
- 虽然用python用了很久了,但是主要还是写一些模型或者算子,对于python中的高级特性用的不多,但是时常阅读大牛的代码或者框架源码,其中
- 我就废话不多说了,直接上代码吧!#!/usr/bin/env python# coding:UTF-8"""@
- Github 项目主页 工具源码分析结果:total : 15981 1568.0 == Backspace 1103.0 == Tab 1
- 最近实现了一些微信的简单玩法 我们可以通过网页版的微信微信网页版,扫码登录后去抓包爬取信息,还可以post去发送信息。》》安装it
- QSlider 是一个具有可来回拉动手柄的控件。有时使用滑块比输入数字或使用旋转框更方便。在我们的例子中,我们将创建一个滑块和一个标签。标签
- 1 各种疫苗梳理截至2022年3月,中国已经向120多个国家和国际组织提供了超过21亿剂疫苗,占中国以外全球疫苗使用总量的1/3。1.1 灭
- 对于熟悉 C/C++ 或 Java 语言的工程师来说,JavaScript 显得灵活,简单易懂,对代码的格式的要求也相对松散。很容易学习,并
- DSDS应用场景1、背景“双卡手机”在中国手机市场占据近90%市场份额,随着软卡、云卡、eSIM的发展,双卡的应用也将更加广泛。此外,5G面
- 本文实例讲述了Python Web编程之WSGI协议。分享给大家供大家参考,具体如下:WSGI简介Web框架和Wen服务器之间需要进行通信,
- 本文实例讲述了Python基础之字典常见操作。分享给大家供大家参考,具体如下:Python字典Python 中的字典是Python中一个键值
- uni-app简介uni-app是一个使用Vue.js开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS、Android、H5、小
- 最近的项目中大量涉及数据的预处理工作,对于ndarray的使用非常频繁。其中ndarray如何进行数值筛选,总结了几种方法。1.按某些固定值
- virtualenv是一个创建隔绝的Python环境的工具。virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Pytho
- 本文实例讲述了go语言使用RC4加密的方法。分享给大家供大家参考。具体分析如下:这里需要使用rc4包来实现rc4加密,核心代码如下:key
- <script> window.onload=function(){ upfile('file.php'); }
- 一、前言越来越多的网站和App开始为用户搭建签到系统,以此来吸引和留住用户。签到系统是一种轻量、互动性强的营销方式,通过用户签到获取免费权益
- 异常处理程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常golang中提供了两种处理异常的方式一种是程序发
- 本文实例为大家分享了vuex实现购物车功能的具体代码,供大家参考,具体内容如下文件目录如下:购物车组件<template> &n
- Oracle的逻辑运算符也是用在SQL语句中必不可少的因素,一共有三个逻辑运算符意义and双值运算符,如果左右两个条件都为真,则得到的值就为