Padans 時間差

2022-07-15 09:46 更新

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

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

字符串

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

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

輸出結(jié)果:

5 days 08:06:59

整數(shù)

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

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

輸出結(jié)果:

0 days 19:00:00

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

數(shù)據(jù)偏移量, 比如,周(weeks)、天(days)、小時(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 格式的值 (標量、數(shù)組、列表或 Series)轉(zhuǎn)換為 Timedelta 類型。如果輸入是 Series,則返回 Series;如果輸入是標量,則返回值也為標量,其他情況輸出 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ù)操作

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

import pandas as pd
s = pd.Series(pd.date_range('2020-1-1', periods=5, freq='D'))
#推導式用法
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

加法運算

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))
#加法運算
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

減法運算

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)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號