中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

pandas怎么實現datetime64與unix時間戳互轉

發布時間:2022-07-16 13:53:34 來源:億速云 閱讀:434 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“pandas怎么實現datetime64與unix時間戳互轉”,內容詳細,步驟清晰,細節處理妥當,希望這篇“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文件時,時間會自動顯示為&lsquo;YYYY-MM-DD HH:MM:SS&rsquo;的格式,那么如果想要將這個時間轉換為 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

讀到這里,這篇“pandas怎么實現datetime64與unix時間戳互轉”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

三原县| 铅山县| 阆中市| 吉林市| 秀山| 普定县| 白水县| 双鸭山市| 宁明县| 梅河口市| 南皮县| 永春县| 十堰市| 兴和县| 云南省| 百色市| 大理市| 吴江市| 无为县| 济阳县| 金乡县| 定安县| 广河县| 汕尾市| 崇信县| 汤阴县| 新巴尔虎右旗| 涡阳县| 日喀则市| 浦北县| 蓬莱市| 图木舒克市| 武冈市| 博乐市| 奉新县| 玛多县| 乌兰察布市| 莎车县| 神池县| 巧家县| 塘沽区|