Padans 時(shí)間差

2022-07-15 09:46 更新

Timedelta 表示時(shí)間差(或者時(shí)間增量),我們可以使用不同的時(shí)間單位來(lái)表示它,比如,天、小時(shí)、分、秒。時(shí)間差的最終的結(jié)果可以是正時(shí)間差,也可以是負(fù)時(shí)間差。

本節(jié)主要介紹創(chuàng)建 Timedelta (時(shí)間差)的方法以及與時(shí)間差相關(guān)的運(yùn)算法則。

字符串

通過(guò)傳遞字符串可以創(chuàng)建 Timedelta 對(duì)象,示例如下:

import pandas as pd
print(pd.Timedelta('5 days 8 hours 6 minutes 59 seconds'))

輸出結(jié)果:

5 days 08:06:59

整數(shù)

通過(guò)傳遞整數(shù)值和unit參數(shù)也可以創(chuàng)建一個(gè) Timedelta 對(duì)象。

import pandas as pd
print(pd.Timedelta(19,unit='h'))

輸出結(jié)果:

0 days 19:00:00

數(shù)據(jù)偏移量

數(shù)據(jù)偏移量, 比如,周(weeks)、天(days)、小時(shí)(hours)、分鐘(minutes)、秒(milliseconds)、毫秒、微秒、納秒都可以使用。

import pandas as pd
print (pd.Timedelta(days=2,hours=6))

輸出結(jié)果:

2 days 06:00:00

to_timedelta()

您可以使用pd.to_timedelta()方法,將具有 timedelta 格式的值 (標(biāo)量、數(shù)組、列表或 Series)轉(zhuǎn)換為 Timedelta 類型。如果輸入是 Series,則返回 Series;如果輸入是標(biāo)量,則返回值也為標(biāo)量,其他情況輸出 TimedeltaIndex。示例如下:

import pandas as pd
print(pd.to_timedelta(['1 days 06:05:01.00003', '15.5us', 'nan']))
print(pd.to_timedelta(np.arange(5), unit='s'))

輸出結(jié)果:

TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015', NaT],dtype='timedelta64[ns]', freq=None)

TimedeltaIndex(['0 days 00:00:00', '0 days 00:00:01', '0 days 00:00:02','0 days 00:00:03', 
'0 days 00:00:04'],dtype='timedelta64[ns]', freq=None)

算術(shù)操作

通過(guò)對(duì)datetime64[ns]類型的時(shí)間序列或時(shí)間戳做算術(shù)運(yùn)算,其運(yùn)算結(jié)果依然是datetime64[ns]數(shù)據(jù)類型。接下來(lái),我們創(chuàng)建一個(gè)帶有 Timedelta 與 datetime 的 DataFrame 對(duì)象,并對(duì)其做一些算術(shù)運(yùn)算。

import pandas as pd
s = pd.Series(pd.date_range('2020-1-1', periods=5, freq='D'))
#推導(dǎo)式用法
td = pd.Series([ pd.Timedelta(days=i) for i in range(5)])
df = pd.DataFrame(dict(A = s, B = td))
print(df)

輸出結(jié)果:

           A      B
0 2020-01-01 0 days
1 2020-01-02 1 days
2 2020-01-03 2 days
3 2020-01-04 3 days
4 2020-01-05 4 days

加法運(yùn)算

import pandas as pd
s = pd.Series(pd.date_range('20120-1-1', periods=3, freq='D'))
td = pd.Series([ pd.Timedelta(days=i) for i in range(3) ])
df = pd.DataFrame(dict(A = s, B = td))
#加法運(yùn)算
df['C']=df['A']+df['B']
print(df)

輸出結(jié)果:

           A      B          C
0 2020-01-01 0 days 2020-01-01
1 2020-01-02 1 days 2020-01-03
2 2020-01-03 2 days 2020-01-05

減法運(yùn)算

import pandas as pd
s = pd.Series(pd.date_range('2012-1-1', periods=3, freq='D'))
td = pd.Series([ pd.Timedelta(days=i) for i in range(3) ])
df = pd.DataFrame(dict(A = s, B = td))
df['C']=df['A']+df['B']
df['D']=df['C']-df['B']
print(df)

輸出結(jié)果:

           A      B          C          D
0 2019-01-01 0 days 2019-01-01 2019-01-01
1 2019-01-02 1 days 2019-01-03 2019-01-02
2 2019-01-03 2 days 2019-01-05 2019-01-03


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)