Timedeltas là sự khác biệt về thời gian, được biểu thị bằng đơn vị khác biệt, e. g. ngày, giờ, phút, giây. Chúng có thể là cả tích cực và tiêu cực Show In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')8 là một lớp con của In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')9 và hoạt động theo cách tương tự, nhưng cho phép tương thích với các loại In [19]: pd.to_timedelta(["1 days 06:05:01.00003", "15.5us", "nan"]) Out[19]: TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None)0 cũng như một loạt các biểu diễn, phân tích cú pháp và thuộc tính tùy chỉnh phân tích cú phápBạn có thể xây dựng một vô hướng In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')8 thông qua các đối số khác nhau, bao gồm các chuỗi In [1]: import datetime # strings In [2]: pd.Timedelta("1 days") Out[2]: Timedelta('1 days 00:00:00') In [3]: pd.Timedelta("1 days 00:00:00") Out[3]: Timedelta('1 days 00:00:00') In [4]: pd.Timedelta("1 days 2 hours") Out[4]: Timedelta('1 days 02:00:00') In [5]: pd.Timedelta("-1 days 2 min 3us") Out[5]: Timedelta('-2 days +23:57:59.999997') # like datetime.timedelta # note: these MUST be specified as keyword arguments In [6]: pd.Timedelta(days=1, seconds=1) Out[6]: Timedelta('1 days 00:00:01') # integers with a unit In [7]: pd.Timedelta(1, unit="d") Out[7]: Timedelta('1 days 00:00:00') # from a datetime.timedelta/np.timedelta64 In [8]: pd.Timedelta(datetime.timedelta(days=1, seconds=1)) Out[8]: Timedelta('1 days 00:00:01') In [9]: pd.Timedelta(np.timedelta64(1, "ms")) Out[9]: Timedelta('0 days 00:00:00.001000') # negative Timedeltas have this string repr # to be more consistent with datetime.timedelta conventions In [10]: pd.Timedelta("-1us") Out[10]: Timedelta('-1 days +23:59:59.999999') # a NaT In [11]: pd.Timedelta("nan") Out[11]: NaT In [12]: pd.Timedelta("nat") Out[12]: NaT # ISO 8601 Duration strings In [13]: pd.Timedelta("P0DT0H1M0S") Out[13]: Timedelta('0 days 00:01:00') In [14]: pd.Timedelta("P0DT0H0M0.000000123S") Out[14]: Timedelta('0 days 00:00:00.000000123') ( In [19]: pd.to_timedelta(["1 days 06:05:01.00003", "15.5us", "nan"]) Out[19]: TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None)2) cũng có thể được sử dụng trong xây dựng In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02') Hơn nữa, các phép toán giữa các số vô hướng mang lại một số vô hướng khác In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')8 ________số 8_______ to_timedeltaSử dụng In [19]: pd.to_timedelta(["1 days 06:05:01.00003", "15.5us", "nan"]) Out[19]: TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None)4 cấp cao nhất, bạn có thể chuyển đổi vô hướng, mảng, danh sách hoặc Sê-ri từ định dạng / giá trị timedelta được công nhận thành loại In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')8. Nó sẽ xây dựng Sê-ri nếu đầu vào là Sê-ri, vô hướng nếu đầu vào giống vô hướng, nếu không, nó sẽ xuất ra một In [19]: pd.to_timedelta(["1 days 06:05:01.00003", "15.5us", "nan"]) Out[19]: TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None)6 Bạn có thể phân tích cú pháp một chuỗi thành Timedelta In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500') hoặc một danh sách/mảng chuỗi In [19]: pd.to_timedelta(["1 days 06:05:01.00003", "15.5us", "nan"]) Out[19]: TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None) Đối số từ khóa In [19]: pd.to_timedelta(["1 days 06:05:01.00003", "15.5us", "nan"]) Out[19]: TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None)7 chỉ định đơn vị của Timedelta nếu đầu vào là số In [20]: pd.to_timedelta(np.arange(5), unit="s") Out[20]: 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) In [21]: pd.to_timedelta(np.arange(5), unit="d") Out[21]: TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq=None) Cảnh báo Nếu một chuỗi hoặc mảng chuỗi được chuyển làm đầu vào thì đối số từ khóa In [19]: pd.to_timedelta(["1 days 06:05:01.00003", "15.5us", "nan"]) Out[19]: TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None)7 sẽ bị bỏ qua. Nếu một chuỗi không có đơn vị được chuyển thì đơn vị mặc định là nano giây được giả định giới hạn múi giờgấu trúc đại diện cho In [19]: pd.to_timedelta(["1 days 06:05:01.00003", "15.5us", "nan"]) Out[19]: TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None)9 ở độ phân giải nano giây sử dụng số nguyên 64 bit. Như vậy, giới hạn số nguyên 64 bit xác định giới hạn In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')8 In [22]: pd.Timedelta.min Out[22]: Timedelta('-106752 days +00:12:43.145224193') In [23]: pd.Timedelta.max Out[23]: Timedelta('106751 days 23:47:16.854775807') hoạt độngBạn có thể thao tác trên Sê-ri/Khung dữ liệu và xây dựng Sê-ri In [20]: pd.to_timedelta(np.arange(5), unit="s") Out[20]: 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) In [21]: pd.to_timedelta(np.arange(5), unit="d") Out[21]: TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq=None)1 thông qua phép trừ trên Sê-ri In [20]: pd.to_timedelta(np.arange(5), unit="s") Out[20]: 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) In [21]: pd.to_timedelta(np.arange(5), unit="d") Out[21]: TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq=None)2 hoặc Sê-ri In [20]: pd.to_timedelta(np.arange(5), unit="s") Out[20]: 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) In [21]: pd.to_timedelta(np.arange(5), unit="d") Out[21]: TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq=None)3 In [24]: s = pd.Series(pd.date_range("2012-1-1", periods=3, freq="D")) In [25]: td = pd.Series([pd.Timedelta(days=i) for i in range(3)]) In [26]: df = pd.DataFrame({"A": s, "B": td}) In [27]: df Out[27]: A B 0 2012-01-01 0 days 1 2012-01-02 1 days 2 2012-01-03 2 days In [28]: df["C"] = df["A"] + df["B"] In [29]: df Out[29]: 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 In [30]: df.dtypes Out[30]: A datetime64[ns] B timedelta64[ns] C datetime64[ns] dtype: object In [31]: s - s.max() Out[31]: 0 -2 days 1 -1 days 2 0 days dtype: timedelta64[ns] In [32]: s - datetime.datetime(2011, 1, 1, 3, 5) Out[32]: 0 364 days 20:55:00 1 365 days 20:55:00 2 366 days 20:55:00 dtype: timedelta64[ns] In [33]: s + datetime.timedelta(minutes=5) Out[33]: 0 2012-01-01 00:05:00 1 2012-01-02 00:05:00 2 2012-01-03 00:05:00 dtype: datetime64[ns] In [34]: s + pd.offsets.Minute(5) Out[34]: 0 2012-01-01 00:05:00 1 2012-01-02 00:05:00 2 2012-01-03 00:05:00 dtype: datetime64[ns] In [35]: s + pd.offsets.Minute(5) + pd.offsets.Milli(5) Out[35]: 0 2012-01-01 00:05:00.005 1 2012-01-02 00:05:00.005 2 2012-01-03 00:05:00.005 dtype: datetime64[ns] Các phép toán với số vô hướng từ chuỗi In [20]: pd.to_timedelta(np.arange(5), unit="s") Out[20]: 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) In [21]: pd.to_timedelta(np.arange(5), unit="d") Out[21]: TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq=None)1 In [36]: y = s - s[0] In [37]: y Out[37]: 0 0 days 1 1 days 2 2 days dtype: timedelta64[ns] Chuỗi múi giờ có giá trị In [20]: pd.to_timedelta(np.arange(5), unit="s") Out[20]: 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) In [21]: pd.to_timedelta(np.arange(5), unit="d") Out[21]: TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq=None)5 được hỗ trợ In [38]: y = s - s.shift() In [39]: y Out[39]: 0 NaT 1 1 days 2 1 days dtype: timedelta64[ns] Các phần tử có thể được đặt thành In [20]: pd.to_timedelta(np.arange(5), unit="s") Out[20]: 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) In [21]: pd.to_timedelta(np.arange(5), unit="d") Out[21]: TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq=None)5 bằng cách sử dụng In [20]: pd.to_timedelta(np.arange(5), unit="s") Out[20]: 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) In [21]: pd.to_timedelta(np.arange(5), unit="d") Out[21]: TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq=None)7 tương tự với datetimes In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')0 Toán hạng cũng có thể xuất hiện theo thứ tự đảo ngược (một đối tượng đơn lẻ được vận hành với Sê-ri) In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')1 Các hoạt động của In [20]: pd.to_timedelta(np.arange(5), unit="s") Out[20]: 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) In [21]: pd.to_timedelta(np.arange(5), unit="d") Out[21]: TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq=None)8 và In [20]: pd.to_timedelta(np.arange(5), unit="s") Out[20]: 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) In [21]: pd.to_timedelta(np.arange(5), unit="d") Out[21]: TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq=None)9 tương ứng được hỗ trợ trên các khung In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')2 Hoạt động của In [22]: pd.Timedelta.min Out[22]: Timedelta('-106752 days +00:12:43.145224193') In [23]: pd.Timedelta.max Out[23]: Timedelta('106751 days 23:47:16.854775807')0 cũng được hỗ trợ trên Sê-ri. Một kết quả vô hướng sẽ là một In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')8 In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')3 Bạn có thể fillna trên timedelta, chuyển timedelta để nhận một giá trị cụ thể In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')4 Bạn cũng có thể phủ định, nhân lên và sử dụng In [22]: pd.Timedelta.min Out[22]: Timedelta('-106752 days +00:12:43.145224193') In [23]: pd.Timedelta.max Out[23]: Timedelta('106751 days 23:47:16.854775807')2 trên In [19]: pd.to_timedelta(["1 days 06:05:01.00003", "15.5us", "nan"]) Out[19]: TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None)9 In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')5 giảmThao tác giảm số cho In [20]: pd.to_timedelta(np.arange(5), unit="s") Out[20]: 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) In [21]: pd.to_timedelta(np.arange(5), unit="d") Out[21]: TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq=None)1 sẽ trả về đối tượng In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')8. Như thường lệ, In [20]: pd.to_timedelta(np.arange(5), unit="s") Out[20]: 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) In [21]: pd.to_timedelta(np.arange(5), unit="d") Out[21]: TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq=None)5 bị bỏ qua trong quá trình đánh giá In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')6 chuyển đổi tần sốSê-ri Timedelta, In [19]: pd.to_timedelta(["1 days 06:05:01.00003", "15.5us", "nan"]) Out[19]: TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None)6 và In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')8 vô hướng có thể được chuyển đổi thành 'tần số' khác bằng cách chia cho một timedelta khác hoặc bằng cách gõ vào một loại timedelta cụ thể. Các hoạt động này mang lại Chuỗi và lan truyền In [20]: pd.to_timedelta(np.arange(5), unit="s") Out[20]: 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) In [21]: pd.to_timedelta(np.arange(5), unit="d") Out[21]: TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq=None)5 -> In [24]: s = pd.Series(pd.date_range("2012-1-1", periods=3, freq="D")) In [25]: td = pd.Series([pd.Timedelta(days=i) for i in range(3)]) In [26]: df = pd.DataFrame({"A": s, "B": td}) In [27]: df Out[27]: A B 0 2012-01-01 0 days 1 2012-01-02 1 days 2 2012-01-03 2 days In [28]: df["C"] = df["A"] + df["B"] In [29]: df Out[29]: 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 In [30]: df.dtypes Out[30]: A datetime64[ns] B timedelta64[ns] C datetime64[ns] dtype: object In [31]: s - s.max() Out[31]: 0 -2 days 1 -1 days 2 0 days dtype: timedelta64[ns] In [32]: s - datetime.datetime(2011, 1, 1, 3, 5) Out[32]: 0 364 days 20:55:00 1 365 days 20:55:00 2 366 days 20:55:00 dtype: timedelta64[ns] In [33]: s + datetime.timedelta(minutes=5) Out[33]: 0 2012-01-01 00:05:00 1 2012-01-02 00:05:00 2 2012-01-03 00:05:00 dtype: datetime64[ns] In [34]: s + pd.offsets.Minute(5) Out[34]: 0 2012-01-01 00:05:00 1 2012-01-02 00:05:00 2 2012-01-03 00:05:00 dtype: datetime64[ns] In [35]: s + pd.offsets.Minute(5) + pd.offsets.Milli(5) Out[35]: 0 2012-01-01 00:05:00.005 1 2012-01-02 00:05:00.005 2 2012-01-03 00:05:00.005 dtype: datetime64[ns]0. Lưu ý rằng phép chia theo vô hướng NumPy là phép chia thực, trong khi phép chia theo kiểu tương đương với phép chia sàn In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')7 Chia hoặc nhân một Sê-ri In [20]: pd.to_timedelta(np.arange(5), unit="s") Out[20]: 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) In [21]: pd.to_timedelta(np.arange(5), unit="d") Out[21]: TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq=None)1 với một số nguyên hoặc Sê-ri số nguyên sẽ tạo ra một Sê-ri dtypes In [20]: pd.to_timedelta(np.arange(5), unit="s") Out[20]: 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) In [21]: pd.to_timedelta(np.arange(5), unit="d") Out[21]: TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq=None)1 khác In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')8 Phép chia làm tròn (phép chia sàn) của một chuỗi In [20]: pd.to_timedelta(np.arange(5), unit="s") Out[20]: 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) In [21]: pd.to_timedelta(np.arange(5), unit="d") Out[21]: TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq=None)1 cho một số vô hướng In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')8 cho một chuỗi các số nguyên In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')9 Các hoạt động mod (%) và divmod được xác định cho In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')8 khi hoạt động với một kiểu timedelta khác hoặc với một đối số số In [16]: pd.Timedelta(pd.offsets.Day(2)) + pd.Timedelta(pd.offsets.Second(2)) + pd.Timedelta( ....: "00:00:00.000123" ....: ) ....: Out[16]: Timedelta('2 days 00:00:02.000123')0 Thuộc tínhBạn có thể truy cập trực tiếp các thành phần khác nhau của In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')8 hoặc In [19]: pd.to_timedelta(["1 days 06:05:01.00003", "15.5us", "nan"]) Out[19]: TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None)6 bằng cách sử dụng các thuộc tính In [24]: s = pd.Series(pd.date_range("2012-1-1", periods=3, freq="D")) In [25]: td = pd.Series([pd.Timedelta(days=i) for i in range(3)]) In [26]: df = pd.DataFrame({"A": s, "B": td}) In [27]: df Out[27]: A B 0 2012-01-01 0 days 1 2012-01-02 1 days 2 2012-01-03 2 days In [28]: df["C"] = df["A"] + df["B"] In [29]: df Out[29]: 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 In [30]: df.dtypes Out[30]: A datetime64[ns] B timedelta64[ns] C datetime64[ns] dtype: object In [31]: s - s.max() Out[31]: 0 -2 days 1 -1 days 2 0 days dtype: timedelta64[ns] In [32]: s - datetime.datetime(2011, 1, 1, 3, 5) Out[32]: 0 364 days 20:55:00 1 365 days 20:55:00 2 366 days 20:55:00 dtype: timedelta64[ns] In [33]: s + datetime.timedelta(minutes=5) Out[33]: 0 2012-01-01 00:05:00 1 2012-01-02 00:05:00 2 2012-01-03 00:05:00 dtype: datetime64[ns] In [34]: s + pd.offsets.Minute(5) Out[34]: 0 2012-01-01 00:05:00 1 2012-01-02 00:05:00 2 2012-01-03 00:05:00 dtype: datetime64[ns] In [35]: s + pd.offsets.Minute(5) + pd.offsets.Milli(5) Out[35]: 0 2012-01-01 00:05:00.005 1 2012-01-02 00:05:00.005 2 2012-01-03 00:05:00.005 dtype: datetime64[ns]8. Các giá trị này giống hệt với các giá trị được trả về bởi In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')9, trong đó, ví dụ: thuộc tính In [36]: y = s - s[0] In [37]: y Out[37]: 0 0 days 1 1 days 2 2 days dtype: timedelta64[ns]0 biểu thị số giây >= 0 và < 1 ngày. Chúng được ký tùy theo việc In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')8 có được ký hay không Các hoạt động này cũng có thể được truy cập trực tiếp thông qua thuộc tính In [36]: y = s - s[0] In [37]: y Out[37]: 0 0 days 1 1 days 2 2 days dtype: timedelta64[ns]2 của In [36]: y = s - s[0] In [37]: y Out[37]: 0 0 days 1 1 days 2 2 days dtype: timedelta64[ns]3. Ghi chú Lưu ý rằng các thuộc tính KHÔNG phải là giá trị được hiển thị của In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')8. Sử dụng In [36]: y = s - s[0] In [37]: y Out[37]: 0 0 days 1 1 days 2 2 days dtype: timedelta64[ns]5 để truy xuất các giá trị được hiển thị Cho một In [36]: y = s - s[0] In [37]: y Out[37]: 0 0 days 1 1 days 2 2 days dtype: timedelta64[ns]3 In [16]: pd.Timedelta(pd.offsets.Day(2)) + pd.Timedelta(pd.offsets.Second(2)) + pd.Timedelta( ....: "00:00:00.000123" ....: ) ....: Out[16]: Timedelta('2 days 00:00:02.000123')1 Bạn có thể truy cập trực tiếp giá trị của các trường cho một vô hướng In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')8 In [16]: pd.Timedelta(pd.offsets.Day(2)) + pd.Timedelta(pd.offsets.Second(2)) + pd.Timedelta( ....: "00:00:00.000123" ....: ) ....: Out[16]: Timedelta('2 days 00:00:02.000123')2 Bạn có thể sử dụng thuộc tính In [36]: y = s - s[0] In [37]: y Out[37]: 0 0 days 1 1 days 2 2 days dtype: timedelta64[ns]5 để truy cập dạng rút gọn của timedelta. Điều này trả về một In [36]: y = s - s[0] In [37]: y Out[37]: 0 0 days 1 1 days 2 2 days dtype: timedelta64[ns]9 được lập chỉ mục tương tự như In [36]: y = s - s[0] In [37]: y Out[37]: 0 0 days 1 1 days 2 2 days dtype: timedelta64[ns]3. Đây là những giá trị được hiển thị của In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')8 In [16]: pd.Timedelta(pd.offsets.Day(2)) + pd.Timedelta(pd.offsets.Second(2)) + pd.Timedelta( ....: "00:00:00.000123" ....: ) ....: Out[16]: Timedelta('2 days 00:00:02.000123')3 Bạn có thể chuyển đổi một In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')8 thành một chuỗi bằng phương thức In [38]: y = s - s.shift() In [39]: y Out[39]: 0 NaT 1 1 days 2 1 days dtype: timedelta64[ns]3 In [16]: pd.Timedelta(pd.offsets.Day(2)) + pd.Timedelta(pd.offsets.Second(2)) + pd.Timedelta( ....: "00:00:00.000123" ....: ) ....: Out[16]: Timedelta('2 days 00:00:02.000123')4 Timedelta IndexĐể tạo một chỉ mục với đồng bằng thời gian, bạn có thể sử dụng hoặc hàm tạo Sử dụng In [19]: pd.to_timedelta(["1 days 06:05:01.00003", "15.5us", "nan"]) Out[19]: TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None)6 bạn có thể truyền các đối tượng dạng chuỗi, In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')8, In [38]: y = s - s.shift() In [39]: y Out[39]: 0 NaT 1 1 days 2 1 days dtype: timedelta64[ns]8 hoặc In [19]: pd.to_timedelta(["1 days 06:05:01.00003", "15.5us", "nan"]) Out[19]: TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None)0. Vượt qua In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')00 sẽ đại diện cho các giá trị còn thiếu In [16]: pd.Timedelta(pd.offsets.Day(2)) + pd.Timedelta(pd.offsets.Second(2)) + pd.Timedelta( ....: "00:00:00.000123" ....: ) ....: Out[16]: Timedelta('2 days 00:00:02.000123')5 Chuỗi 'suy luận' có thể được chuyển để đặt tần suất của chỉ mục làm tần suất được suy luận khi tạo In [16]: pd.Timedelta(pd.offsets.Day(2)) + pd.Timedelta(pd.offsets.Second(2)) + pd.Timedelta( ....: "00:00:00.000123" ....: ) ....: Out[16]: Timedelta('2 days 00:00:02.000123')6 Tạo phạm vi thời gian đồng bằngTương tự như , bạn có thể xây dựng các phạm vi thông thường của một In [19]: pd.to_timedelta(["1 days 06:05:01.00003", "15.5us", "nan"]) Out[19]: TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None)6 bằng cách sử dụng. Tần suất mặc định cho In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')04 là ngày dương lịch In [16]: pd.Timedelta(pd.offsets.Day(2)) + pd.Timedelta(pd.offsets.Second(2)) + pd.Timedelta( ....: "00:00:00.000123" ....: ) ....: Out[16]: Timedelta('2 days 00:00:02.000123')7 Có thể sử dụng nhiều cách kết hợp khác nhau của In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')05, In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')06 và In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')07 với In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')04 In [16]: pd.Timedelta(pd.offsets.Day(2)) + pd.Timedelta(pd.offsets.Second(2)) + pd.Timedelta( ....: "00:00:00.000123" ....: ) ....: Out[16]: Timedelta('2 days 00:00:02.000123')8 Tham số In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')09 có thể truyền nhiều loại In [16]: pd.Timedelta(pd.offsets.Day(2)) + pd.Timedelta(pd.offsets.Second(2)) + pd.Timedelta( ....: "00:00:00.000123" ....: ) ....: Out[16]: Timedelta('2 days 00:00:02.000123')9 Việc chỉ định In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')05, In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')06 và In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')07 sẽ tạo ra một loạt các múi giờ cách đều nhau từ In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')05 đến In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')06, với số phần tử In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')07 trong kết quả là In [19]: pd.to_timedelta(["1 days 06:05:01.00003", "15.5us", "nan"]) Out[19]: TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None)6 In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')0 Sử dụng Timedelta IndexTương tự như các chỉ số giống như ngày giờ khác, In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')17 và In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')18, bạn có thể sử dụng In [19]: pd.to_timedelta(["1 days 06:05:01.00003", "15.5us", "nan"]) Out[19]: TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None)6 làm chỉ mục của các đối tượng gấu trúc In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')1 Các lựa chọn hoạt động tương tự, với sự ép buộc đối với các chuỗi và lát cắt In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')2 Ngoài ra, bạn có thể sử dụng lựa chọn chuỗi một phần và phạm vi sẽ được suy ra In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')3 hoạt độngCuối cùng, sự kết hợp của In [19]: pd.to_timedelta(["1 days 06:05:01.00003", "15.5us", "nan"]) Out[19]: TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None)6 với In [15]: pd.Timedelta(pd.offsets.Second(2)) Out[15]: Timedelta('0 days 00:00:02')17 cho phép một số hoạt động kết hợp nhất định bảo toàn NaT In [17]: pd.to_timedelta("1 days 06:05:01.00003") Out[17]: Timedelta('1 days 06:05:01.000030') In [18]: pd.to_timedelta("15.5us") Out[18]: Timedelta('0 days 00:00:00.000015500')4 chuyển đổiTương tự như chuyển đổi tần số trên In [36]: y = s - s[0] In [37]: y Out[37]: 0 0 days 1 1 days 2 2 days dtype: timedelta64[ns]3 ở trên, bạn có thể chuyển đổi các chỉ số này để tạo ra một Chỉ số khác |