網站首頁 編程語言 正文
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
相關推薦
- 2022-08-03 Shell常用服務器日志分析命令總結_linux shell
- 2022-05-15 go?RWMutex的實現示例_Golang
- 2022-07-25 利用正則表達式匹配浮點型數據_正則表達式
- 2022-08-03 如何一鍵理清大型Python項目依賴樹_python
- 2023-01-03 Oracle?CDB管理實現多租戶管理功能_oracle
- 2022-07-19 Linux——磁盤管理與文件系統
- 2022-04-23 配置基于域名訪問的網站以及指定用戶可訪問的網站
- 2023-04-19 nginx: [error] CreateFile() “D:\nginx-1.21.6/logs/
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支