Python Pandas - 時間增量



Timedeltas 是時間差,以不同的單位表示,例如天、小時、分鐘、秒。它們可以是正數也可以是負數。

我們可以使用各種引數建立 Timedelta 物件,如下所示:

字串

透過傳遞字串文字,我們可以建立一個 timedelta 物件。

import pandas as pd

print pd.Timedelta('2 days 2 hours 15 minutes 30 seconds')

輸出如下:

2 days 02:15:30

整數

透過傳遞帶有單位的整數值,引數建立一個 Timedelta 物件。

import pandas as pd

print pd.Timedelta(6,unit='h')

輸出如下:

0 days 06:00:00

資料偏移量

資料偏移量,例如 - 周、天、小時、分鐘、秒、毫秒、微秒、納秒,也可以用於構造。

import pandas as pd

print pd.Timedelta(days=2)

輸出如下:

2 days 00:00:00

to_timedelta()

使用頂級pd.to_timedelta,您可以將標量、陣列、列表或序列從識別的 timedelta 格式/值轉換為 Timedelta 型別。如果輸入是 Series,它將構造 Series;如果輸入是標量,則輸出標量;否則將輸出TimedeltaIndex

import pandas as pd

print pd.Timedelta(days=2)

輸出如下:

2 days 00:00:00

運算

您可以對 Series/DataFrame 進行運算,並透過對datetime64[ns] Series 或 Timestamps 進行減法運算來構造timedelta64[ns] Series。

現在讓我們建立一個包含 Timedelta 和 datetime 物件的 DataFrame,並對其進行一些算術運算:

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))

print df

輸出如下:

            A      B
0  2012-01-01 0 days
1  2012-01-02 1 days
2  2012-01-03 2 days

加法運算

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']

print df

輸出如下:

           A      B          C
0 2012-01-01 0 days 2012-01-01
1 2012-01-02 1 days 2012-01-03
2 2012-01-03 2 days 2012-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

輸出如下:

           A      B          C          D
0 2012-01-01 0 days 2012-01-01 2012-01-01
1 2012-01-02 1 days 2012-01-03 2012-01-04
2 2012-01-03 2 days 2012-01-05 2012-01-07
廣告