pandas實(shí)現(xiàn)datetime64與unix時(shí)間戳互轉(zhuǎn)
datetime64與unix時(shí)間戳互轉(zhuǎn)
在用pandas處理數(shù)據(jù)時(shí),經(jīng)常要處理一些時(shí)間類(lèi)型數(shù)據(jù),經(jīng)常把pandas時(shí)間類(lèi)型與datetime模塊,還有python自帶的time模塊搞混淆,記錄之。
unix 時(shí)間戳與pandas中的Timestamp互轉(zhuǎn)
import time
def unixToTime(unixtime):
? ? return pd.to_datetime(unixtime,unit='s',utc=True).tz_convert('Asia/Shanghai') #utc時(shí)間比上海時(shí)間少8小時(shí),做時(shí)區(qū)轉(zhuǎn)換
?
def timeToUnix(dt64):
? ? return dt64.astype('datetime64[s]').astype('int')
?
unixtime = 1514737265
print(unixToTime(unixtime))
?
#python 自帶time模塊的local_time可以直接轉(zhuǎn)北京時(shí)間
struct_time = time.localtime(unixtime)
print(struct_time)
#轉(zhuǎn)化格式
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中還有一個(gè)datetime模塊,這個(gè)模塊包含一些函數(shù),如today,now,fromtimestamp,strptime,Datetime
from datetime import datetime import pandas as pd startTime = datetime.now() print(startTime) print(type(startTime)) ? #datetime 字符串轉(zhuǎn)時(shí)間戳 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 字符串轉(zhuǎn)時(shí)間戳 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
#取到年,月,日,日期,小時(shí),分鐘,秒以及一周中的第幾天 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默認(rèn)時(shí)間格式轉(zhuǎn)換為unix間戳
Pandas讀取csv文件時(shí),時(shí)間會(huì)自動(dòng)顯示為‘YYYY-MM-DD HH:MM:SS’的格式,那么如果想要將這個(gè)時(shí)間轉(zhuǎn)換為 Unix時(shí)間戳 呢?
先科普一下,什么是 Unix時(shí)間戳 呢?
Unix時(shí)間戳 是一種時(shí)間表示方式,是一個(gè)整型值,代表從格林威治時(shí)間1970年01月01日00時(shí)00分00秒起至現(xiàn)在經(jīng)過(guò)的總秒數(shù)。
舉個(gè)栗子
一個(gè)值為 1492751843 的Unix時(shí)間戳 ==>
把它轉(zhuǎn)換為 北京時(shí)間為 2017/4/21 13:17:23
實(shí)際上,Pandas中時(shí)間用 pandas.datetime() 轉(zhuǎn)換為 pandas.tslib.Timestamp(時(shí)間戳) 格式之后,已經(jīng)變成了整型存儲(chǔ),即 Unix時(shí)間戳形式 。
如果我們需要這個(gè)時(shí)間戳的整型格式,可以用 time[0].value 這個(gè)屬性把它提取出來(lái)。
樣例
>>> import pandas as pd ? ? # 導(dǎo)入pandas庫(kù)
>>> data = pd.read_csv('airquality.csv') ? ? ? ?# 讀入數(shù)據(jù)文件
>>> data.time = pd.to_datetime(data.time) ? # 將時(shí)間那一列從str轉(zhuǎn)換為時(shí)間戳格式
>>> type(data.time[0]) ? ? ?# 查看轉(zhuǎn)換之后的格式
<class 'pandas.tslib.Timestamp'>
>>> data.time[0] ? ? ? ? ? ?# 查看第一條數(shù)據(jù),默認(rèn)顯示為‘YYYY-MM-DD HH:MM:SS'格式
Timestamp('2014-05-01 00:00:00')
>>> data.time[0].value ?# 查看第一條數(shù)據(jù)的Unix時(shí)間戳格式
1398902400000000000L
>>> data.time[0].value//10**9 ? # 轉(zhuǎn)換為秒級(jí)
1398902400L
>>> t1 = [t.value for t in data.time] ? # 提取整列(納秒級(jí),即1s = 1,000,000,000 ns)
>>> t1[:3] ? ? ?# 顯示前三條數(shù)據(jù)
[1398902400000000000L, 1398906000000000000L, 1398909600000000000L]
>>> t2 = [t.value//10**9 for t in data.time] ? ?# 提取整列(秒級(jí))
>>> t2[:3] ? ? ?# 顯示前三條數(shù)據(jù)
[1398902400L, 1398906000L, 1398909600L]
>>> t1 = pd.DatetimeIndex(t1) ? ? ? # 從list列表轉(zhuǎn)換為pandas的DatetimeIndex格式
>>> t1[:3] ? ? ?# 顯示前三條數(shù)據(jù)
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]) ? ? # 每條數(shù)據(jù)為T(mén)imestamp格式
<class 'pandas.tslib.Timestamp'>
>>> t1[0].value
1398902400000000000L以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Pandas中datetime數(shù)據(jù)類(lèi)型的使用
- 關(guān)于pandas中的.update()方法解析
- Python中的Pandas?時(shí)間函數(shù)?time?、datetime?模塊和時(shí)間處理基礎(chǔ)講解
- 關(guān)于pandas.date_range()的用法及說(shuō)明
- pandas庫(kù)中to_datetime()方法的使用解析
- pandas時(shí)間序列之pd.to_datetime()的實(shí)現(xiàn)
- python3中datetime庫(kù),time庫(kù)以及pandas中的時(shí)間函數(shù)區(qū)別與詳解
- Pandas中的日期時(shí)間date處理小結(jié)
相關(guān)文章
python通過(guò)函數(shù)名調(diào)用函數(shù)的幾種場(chǎng)景
這篇文章主要介紹了python通過(guò)函數(shù)名調(diào)用函數(shù)的幾種場(chǎng)景,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-09-09
python爬蟲(chóng)入門(mén)教程--HTML文本的解析庫(kù)BeautifulSoup(四)
Beautiful Soup是python的一個(gè)庫(kù),最主要的功能是從網(wǎng)頁(yè)抓取數(shù)據(jù)。下面這篇文章主要給大家介紹了python爬蟲(chóng)之HTML文本的解析庫(kù)BeautifulSoup的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-05-05
使用Python的datetime庫(kù)處理時(shí)間(RPA流程)
datetime 是 Python 處理日期和時(shí)間的標(biāo)準(zhǔn)庫(kù)。這篇文章主要介紹了使用Python的datetime庫(kù)處理時(shí)間(RPA流程),需要的朋友可以參考下2019-11-11
Python Multinomial Naive Bayes多項(xiàng)貝葉斯模型實(shí)現(xiàn)原理介紹
這篇文章主要介紹了Python Multinomial Naive Bayes多項(xiàng)貝葉斯模型實(shí)現(xiàn)原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-09-09
PyCharm設(shè)置每行最大長(zhǎng)度限制的方法
今天小編就為大家分享一篇PyCharm設(shè)置每行最大長(zhǎng)度限制的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
python?opencv的imread方法無(wú)法讀取圖片問(wèn)題
這篇文章主要介紹了python?opencv的imread方法無(wú)法讀取圖片問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
django 解決擴(kuò)展自帶User表遇到的問(wèn)題
這篇文章主要介紹了django 解決擴(kuò)展自帶User表遇到的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05

