1、獲取數(shù)據(jù)格式
print(type(字符串))
2、時(shí)間格式
關(guān)于數(shù)據(jù)格式轉(zhuǎn)換,最常用的就是時(shí)間格式的轉(zhuǎn)換
如果時(shí)間數(shù)據(jù)是以字符串格式存入,那就無(wú)法進(jìn)行時(shí)間運(yùn)算,需要把字符串格式的時(shí)間數(shù)據(jù)轉(zhuǎn)換成真正的時(shí)間格式數(shù)據(jù)。下面是常見(jiàn)的時(shí)間格式處理方法
2.1、寫(xiě)入一個(gè)時(shí)間類(lèi)型的數(shù)據(jù)
首先,導(dǎo)入datetime
模塊,使用datetime()
函數(shù);然后,
按照年、月、日、時(shí)、分、秒依次傳入數(shù)字組成一個(gè)時(shí)間。其中(年、月、日)是必要的參數(shù);
import numpy as np
import pandas as pd
from datetime import datetime
start = datetime(2020, 5, 1, 23, 59, 59)
print(start)
#輸出:2020-05-01 23:59:59
end = datetime(2020, 10, 1)
print(end)
#輸出:2020-10-01 00:00:00
2.2、獲取當(dāng)前年月日時(shí)分秒信息
from datetime import datetime
#獲取當(dāng)前日期
today=datetime.datetime.now()
today
#Out[195]: datetime.datetime(2023, 3, 27, 20, 50, 57, 225711)
today.year
#Out[196]: 2023
today.month
#Out[197]: 3
today.day
#Out[198]: 27
#獲取當(dāng)前時(shí)間
now=datetime.datetime.now().time()
now.hour
#Out[190]: 20
now.minute
#Out[191]: 49
now.second
#Out[192]: 51
2.3、字符串?dāng)?shù)據(jù)轉(zhuǎn)時(shí)間數(shù)據(jù)
單一字符串和數(shù)據(jù)框中的字符串時(shí)間轉(zhuǎn)換方法不同
- 單一字符串轉(zhuǎn)換日期格式
#單一字符串轉(zhuǎn)日期
time=datetime.strptime('20220201', '%Y%m%d')
time
#Out[101]: datetime.datetime(2022, 2, 1, 0, 0)
- 數(shù)據(jù)框中字符串轉(zhuǎn)日期格式
錯(cuò)誤示例?。翰荒苡胐atetime.strptime轉(zhuǎn)換,因?yàn)閐atetime.strptime只能處理單一字符串?dāng)?shù)值,無(wú)法處理序列數(shù)據(jù),而數(shù)據(jù)框中的單一列是一個(gè)序列數(shù)據(jù)
import pandas as pd
df=pd.read_excel("/Users/tinawang/Documents/python/case.xlsx",sheet_name="sj")
df
df["date_a"]=datetime.strptime(df["date_a"], '%Y%m%d')
#輸出報(bào)錯(cuò):TypeError: strptime() argument 1 must be str, not Series
正確示例:利用pandas模塊中的to_datetime()函數(shù),但是要注意。to_datetime()函數(shù)默認(rèn)處理yyyy-mm-dd格式數(shù)據(jù),如果數(shù)據(jù)是其他格式如yyyymmdd,需要利用format參數(shù)表明函數(shù)格式
轉(zhuǎn)換為時(shí)間格式的數(shù)據(jù),可以獲取年月日信息,可以通過(guò)后綴.dt
可以把時(shí)間類(lèi)型的數(shù)據(jù)轉(zhuǎn)成一種方便我們提取日期或時(shí)間的對(duì)象,這種對(duì)象包含多種屬性,其中就有 year(年)、month(月)、day(日)、week(周)、hour(時(shí))、minute(分)、second(秒)
date_a | date_b | time |
20220201 | 2022-02-21 | 2022/03/01 12:30 |
20220202 | 2022-02-15 | 2022/03/02 12:34 |
import pandas as pd
df=pd.read_excel("/Users/tinawang/Documents/python/case.xlsx",sheet_name="sj")
print(df)
# 使用to_datetime()函數(shù)
df["date_a_new"] = pd.to_datetime(df["date_a"],format='%Y%m%d')
print(df)
df["date_b_new"] = pd.to_datetime(df["date_b"])
df["time_new"] = pd.to_datetime(df["time"])
2.4、時(shí)間計(jì)算
在Python中,時(shí)間數(shù)據(jù)可能有下面三種形式:
具體的時(shí)間點(diǎn) | 2023/03/26 12:00:00 | datetime |
時(shí)間間隔 | 3 days,2 months | timedelta |
時(shí)期 | 2023年3月 | period |
已經(jīng)轉(zhuǎn)換為時(shí)間格式的數(shù)據(jù)可以直接進(jìn)行加減運(yùn)算,兩個(gè)日期相減得到的就是時(shí)間間隔的形式
from datetime import datetime
start = datetime(2020, 5, 1, 23, 59, 59)
end = datetime(2020, 10, 1)
timeSpan = end - start
print(timeSpan)
#152 days, 0:00:01
print(type(timeSpan))
#<class 'datetime.timedelta'>
import pandas as pd
df=pd.read_excel("/Users/tinawang/Documents/python/case.xlsx",sheet_name="sj")
print(df)
#轉(zhuǎn)換時(shí)間格式
df["date_a_new"] = pd.to_datetime(df["date_a"],format='%Y%m%d')
df["date_b_new"] = pd.to_datetime(df["date_b"])
#增加1天
df['next_tomorrow']=df["date_a_new"]+datetime.timedelta(days = 1)
#增加一周
df['next_week']=df["date_a_new"]+datetime.timedelta(weeks=1)
#計(jì)算間隔
df['gap']=df["date_b_new"]-df["date_a_new"]
print(df)
#輸出結(jié)果
date_a date_b time ... next_tomorrow next_week gap
0 20220201 2022-02-21 2022/03/01 12:30 ... 2022-02-02 2022-02-08 20 days
1 20220202 2022-02-15 2022/03/02 12:34 ... 2022-02-03 2022-02-09 13 days
2.5、時(shí)間格式轉(zhuǎn)字符串
時(shí)間格式的數(shù)據(jù),可以獲取年月日信息?year(年)、month(月)、day(日)、week(周)、hour(時(shí))、minute(分)、second(秒)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-478656.html
import datetime
today=datetime.datetime.now()
today
today.year
today.month
today.day
now=datetime.datetime.now().time()
now.hour
now.minute
now.second
如果是序列數(shù)據(jù),需要通過(guò)后綴.dt
可以把時(shí)間類(lèi)型的數(shù)據(jù)轉(zhuǎn)成一種方便我們提取日期或時(shí)間的對(duì)象文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-478656.html
import pandas as pd
df=pd.read_excel("/Users/tinawang/Documents/python/case.xlsx",sheet_name="sj")
print(df)
# 使用to_datetime()函數(shù)
df["date_a_new"] = pd.to_datetime(df["date_a"],format='%Y%m%d')
print(df)
#獲取年月日數(shù)據(jù)
df["date_a_new"].dt.day
df["date_a_new"].dt.month
df["date_a_new"].dt.year
df["date_a_new"].dt.week
df["date_b_new"] = pd.to_datetime(df["date_b"])
df["date_b_new"].dt.day
df["date_b_new"].dt.month
df["date_b_new"].dt.year
df["date_b_new"].dt.week
#獲取時(shí)分秒數(shù)據(jù)
df["time_new"] = pd.to_datetime(df["time"])
df["time_new"].dt.hour
df["time_new"].dt.minute
到了這里,關(guān)于九、python-時(shí)間數(shù)據(jù)格式轉(zhuǎn)換的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!