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ù)值和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
您可以使用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)
通過對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
更多建議: