Deleting an index deletes its documents, shards, and metadata. It does not delete related Kibana components, such as data views, visualizations, or dashboards
You cannot delete the current write index of a data stream. To delete the index, you must roll over the data stream so a new write index is created. You can then use the delete index API to delete the previous write index
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']08
[Required, string] Comma-separated list of indices to delete. You cannot specify index aliases
By default, this parameter does not support wildcards [
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']09] or
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']10. To use wildcards or
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']10, set the
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']12 cluster setting to
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']13
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']14
[Optional, Boolean] If
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']13, the request returns an error if any wildcard expression, index alias, or
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']10 value targets only missing or closed indices. This behavior applies even if the request targets other open indices. For example, a request targeting
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']171 returns an error if an index starts with
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']172 but no index starts with
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']173
Defaults to
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']174
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']175
[Optional, string] Type of index that wildcard patterns can match. If the request can target data streams, this argument determines whether wildcard expressions match hidden data streams. Supports comma-separated values, such as
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']176. Valid values are
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']177Match any data stream or index, including hidden ones.
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']178Match open, non-hidden indices. Also matches any non-hidden data stream.
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']179Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']080Match hidden data streams and hidden indices. Must be combined with
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']178,
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']179, or both.
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']083Wildcard patterns are not accepted
pandas contains extensive capabilities and features for working with time series data for all domains. Using the NumPy
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']75 and
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']76 dtypes, pandas has consolidated a large number of features from other Python libraries like
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']77 as well as created a tremendous amount of new functionality for manipulating time series data
For example, pandas supports
Parsing time series information from various sources and formats
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]
Generate sequences of fixed-frequency dates and time spans
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
Manipulating and converting date times with timezone information
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']
Resampling or converting a time series to a particular frequency
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float64
Performing date and time arithmetic with absolute or relative time increments
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'
pandas provides a relatively compact and self-contained set of tools for performing the above tasks and more
Overview#
pandas captures 4 general time related concepts
Ngày giờ. A specific date and time with timezone support. Similar to
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
78 from the standard libraryTime deltas. An absolute time duration. Similar to
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
79 from the standard libraryTime spans. A span of time defined by a point in time and its associated frequency
Date offsets. A relative time duration that respects calendar arithmetic. Similar to
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
80 from theIn [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
81 package
Concept
Scalar Class
Array Class
pandas Data Type
Primary Creation Method
Date times
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']84 or
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']85
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']86 hoặc
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']87
đồng bằng thời gian
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']88
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']89
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']90
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']91 hoặc
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']92
khoảng thời gian
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']95
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93 hoặc
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']97
ngày offset
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']98
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']99
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']99
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']98
For time series data, it’s conventional to represent the time component in the index of a
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02 or
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']03 so manipulations can be performed with respect to the time element
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]4
However,
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02 and
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']03 can directly also support the time component as data itself
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]7
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02 and
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']03 have extended data type support and functionality for
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']08,
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']09 and
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93 data when passed into those constructors.
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']98 data however will be stored as
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']12 data
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']5
Lastly, pandas represents null date times, time deltas, and time spans as
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']13 which is useful for representing missing or null date like values and behaves similar as
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']14 does for float data
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']8
Timestamps vs. time spans#
Timestamped data is the most basic type of time series data that associates values with points in time. For pandas objects it means using the points in time
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']9
However, in many cases it is more natural to associate things like change variables with a time span instead. The span represented by
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93 can be specified explicitly, or inferred from datetime string format
For example
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']0
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 and
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93 can serve as an index. Lists of
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 and
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93 are automatically coerced to
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 and
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94 respectively
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']1
gấu trúc cho phép bạn chụp cả hai biểu diễn và chuyển đổi giữa chúng. Under the hood, pandas represents timestamps using instances of
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 and sequences of timestamps using instances of
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83. For regular time spans, pandas uses
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93 objects for scalar values and
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94 for sequences of spans. Better support for irregular intervals with arbitrary start and end points are forth-coming in future releases
Converting to timestamps#
To convert a
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02 or list-like object of date-like objects e. g. strings, epochs, or a mixture, you can use the
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']86 function. When passed a
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02, this returns a
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02 [with the same index], while a list-like is converted to a
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']2
If you use dates which start with the day first [i. e. European style], you can pass the
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']31 flag
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']3
Warning
You see in the above example that
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']31 isn’t strict. If a date can’t be parsed with the day being first it will be parsed as if
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']31 were False, and in the case of parsing delimited date strings [e. g.
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']34] then a warning will also be raised
If you pass a single string to
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']86, it returns a single
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82.
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 can also accept string input, but it doesn’t accept string parsing options like
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']31 or
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']39, so use
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']86 if these are required
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']4
You can also use the
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 constructor directly
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']5
The string ‘infer’ can be passed in order to set the frequency of the index as the inferred frequency upon creation
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']6
Providing a format argument#
In addition to the required datetime string, a
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']39 argument can be passed to ensure specific parsing. This could also potentially speed up the conversion considerably
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']7
For more information on the choices available when specifying the
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']39 option, see the Python datetime documentation
Lắp ráp datetime từ nhiều cột DataFrame#
Bạn cũng có thể chuyển một
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']03 cột số nguyên hoặc chuỗi để tập hợp thành một
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02 của
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']46
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']8
Bạn chỉ có thể vượt qua các cột mà bạn cần lắp ráp
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']9
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']47 tìm kiếm các chỉ định tiêu chuẩn của thành phần ngày giờ trong tên cột, bao gồm
yêu cầu.
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']
48,In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']
49,In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']
50không bắt buộc.
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']
51,In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']
52,In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']
53,In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']
54,In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']
55,In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']
56
Dữ liệu không hợp lệ
Hành vi mặc định,
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']57, là tăng khi không thể phân tích cú pháp
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']0
Vượt qua
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']58 để trả về đầu vào ban đầu khi không thể phân tích cú pháp
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']1
Vượt qua
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']59 để chuyển đổi dữ liệu không thể phân tích cú pháp thành
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']13 [không phải thời gian]
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']2
Dấu thời gian Epoch#
gấu trúc hỗ trợ chuyển đổi thời gian số nguyên hoặc số float thành
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 và
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83. Đơn vị mặc định là nano giây, vì đó là cách các đối tượng
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 được lưu trữ bên trong. Tuy nhiên, các kỷ nguyên thường được lưu trữ trong một
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']64 khác có thể được chỉ định. Chúng được tính toán từ điểm bắt đầu được chỉ định bởi tham số
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']65
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']3
Ghi chú
Tham số
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']64 không sử dụng các chuỗi giống như tham số
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']39 đã được thảo luận ở trên ]. Các đơn vị có sẵn được liệt kê trên tài liệu cho
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']68.
Thay đổi trong phiên bản 1. 0. 0
Xây dựng một
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 hoặc
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 với dấu thời gian epoch với đối số
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']71 được chỉ định sẽ làm tăng ValueError. Nếu bạn có các kỷ nguyên trong thời gian treo tường ở múi giờ khác, bạn có thể đọc các kỷ nguyên đó dưới dạng dấu thời gian không có múi giờ và sau đó bản địa hóa thành múi giờ thích hợp
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']4
Ghi chú
Thời gian Epoch sẽ được làm tròn đến nano giây gần nhất
Warning
Chuyển đổi thời gian trôi nổi có thể dẫn đến kết quả không chính xác và không mong muốn. Python float có độ chính xác khoảng 15 chữ số ở dạng thập phân. Làm tròn trong quá trình chuyển đổi từ float sang độ chính xác cao
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 là không thể tránh khỏi. Cách duy nhất để đạt được độ chính xác chính xác là sử dụng các loại chiều rộng cố định [e. g. một int64].
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']5
Xem thêm
Sử dụng tham số gốc
Từ dấu thời gian đến kỷ nguyên #
Để đảo ngược thao tác ở trên, cụ thể là chuyển đổi từ
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 sang kỷ nguyên 'unix'
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']6
Chúng tôi trừ đi kỷ nguyên [nửa đêm ngày 1 tháng 1 năm 1970 UTC] và sau đó chia sàn cho “đơn vị” [1 giây]
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']7
Sử dụng tham số In [6]: dti = dti.tz_localize["UTC"]
In [7]: dti
Out[7]:
DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00',
'2018-01-01 02:00:00+00:00'],
dtype='datetime64[ns, UTC]', freq='H']
In [8]: dti.tz_convert["US/Pacific"]
Out[8]:
DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00',
'2017-12-31 18:00:00-08:00'],
dtype='datetime64[ns, US/Pacific]', freq='H']
65#
Sử dụng tham số
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']65, người ta có thể chỉ định một điểm bắt đầu thay thế để tạo một
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83. Ví dụ: để sử dụng 1960-01-01 làm ngày bắt đầu
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']8
Giá trị mặc định được đặt là
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']77, giá trị mặc định là
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']78. Commonly called ‘unix epoch’ or POSIX time
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']9
Đang tạo phạm vi dấu thời gian#
Để tạo chỉ mục có dấu thời gian, bạn có thể sử dụng hàm tạo
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 hoặc
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']80 và chuyển vào danh sách đối tượng ngày giờ
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float640
Trong thực tế, điều này trở nên rất cồng kềnh vì chúng ta thường cần một chỉ mục rất dài với một số lượng lớn dấu thời gian. Nếu chúng ta cần dấu thời gian với tần suất thường xuyên, chúng ta có thể sử dụng các hàm
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']81 và
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']82 để tạo một
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83. Tần suất mặc định cho
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']87 là ngày dương lịch trong khi mặc định cho
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']85 là ngày làm việc
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float641
Các chức năng tiện lợi như
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']87 và
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']85 có thể sử dụng nhiều bí danh tần số .
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float642
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']87 và
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']85 giúp dễ dàng tạo phạm vi ngày bằng cách sử dụng các kết hợp tham số khác nhau như
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']90,
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']91,
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']92 và
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']93. Ngày bắt đầu và ngày kết thúc được bao gồm một cách nghiêm ngặt, vì vậy các ngày nằm ngoài những ngày được chỉ định sẽ không được tạo
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float643
Việc chỉ định
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']90,
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']91 và
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']92 sẽ tạo ra một phạm vi ngày cách đều nhau từ
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']90 đến
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']91, với số phần tử
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']92 trong kết quả là
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float644
Dải tần số tùy chỉnh#
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']85 cũng có thể tạo phạm vi ngày tần suất tùy chỉnh bằng cách sử dụng tham số
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6402 và
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6403. Các thông số này sẽ chỉ được sử dụng nếu một chuỗi tần số tùy chỉnh được chuyển
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float645
Xem thêm
ngày làm việc tùy chỉnh
Giới hạn dấu thời gian#
Do gấu trúc biểu thị dấu thời gian ở độ phân giải nano giây nên khoảng thời gian có thể được biểu thị bằng số nguyên 64 bit bị giới hạn trong khoảng 584 năm
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float646
Xem thêm
Đại diện cho các khoảng ngoài giới hạn
Lập chỉ mục #
Một trong những cách sử dụng chính của
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 là làm chỉ mục cho các đối tượng gấu trúc. Lớp
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 chứa nhiều tối ưu hóa liên quan đến chuỗi thời gian
Một phạm vi ngày rộng lớn cho các khoảng thời gian bù trừ khác nhau được tính toán trước và lưu vào bộ đệm ẩn để tạo ra các phạm vi ngày tiếp theo rất nhanh [chỉ cần lấy một lát]
Dịch chuyển nhanh bằng phương thức
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float64
06 trên các đối tượng gấu trúcViệc kết hợp các đối tượng
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
83 chồng chéo có cùng tần số diễn ra rất nhanh [quan trọng đối với việc căn chỉnh dữ liệu nhanh]Truy cập nhanh vào các trường ngày thông qua các thuộc tính như
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']
48,In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']
49, v.v.Các chức năng chính quy hóa như
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float64
10 và logicIn [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float64
11 rất nhanh
Các đối tượng
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 có tất cả các chức năng cơ bản của các đối tượng
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']80 thông thường và một loạt các phương pháp cụ thể theo chuỗi thời gian nâng cao để xử lý tần số dễ dàng
Xem thêm
Phương pháp lập chỉ mục lại
Ghi chú
Mặc dù gấu trúc không bắt buộc bạn phải có chỉ mục ngày được sắp xếp, nhưng một số phương pháp này có thể có hành vi không mong muốn hoặc không chính xác nếu ngày chưa được sắp xếp
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 có thể được sử dụng như một chỉ mục thông thường và cung cấp tất cả các chức năng thông minh của nó như lựa chọn, cắt lát, v.v.
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float647
Lập chỉ mục chuỗi một phần #
Ngày và chuỗi phân tích thành dấu thời gian có thể được chuyển thành tham số lập chỉ mục
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float648
Để thuận tiện cho việc truy cập chuỗi thời gian dài hơn, bạn cũng có thể chuyển năm hoặc năm và tháng dưới dạng chuỗi
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float649
Kiểu cắt này cũng sẽ hoạt động trên
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']03 với
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83. Vì lựa chọn một phần chuỗi là một dạng cắt nhãn nên các điểm cuối sẽ được đưa vào. Điều này sẽ bao gồm thời gian phù hợp vào một ngày bao gồm
Warning
Lập chỉ mục các hàng
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']03 bằng một chuỗi với getitem [e. g.
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6418] không được dùng nữa bắt đầu với gấu trúc 1. 2. 0 [do sự mơ hồ cho dù nó đang lập chỉ mục các hàng hay chọn một cột] và sẽ bị xóa trong phiên bản tương lai. Tương đương với
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6419 [e. g.
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6420] is still supported
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'0
Điều này bắt đầu vào lần đầu tiên trong tháng và bao gồm ngày và giờ cuối cùng trong tháng
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'1
Điều này chỉ định thời gian dừng bao gồm tất cả thời gian vào ngày cuối cùng
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'2
Điều này chỉ định thời gian dừng chính xác [và không giống như ở trên]
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'3
Chúng tôi đang dừng ở điểm cuối được bao gồm vì nó là một phần của chỉ mục
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'4
Chỉ mục chuỗi một phần của
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 cũng hoạt động trên
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']03 với
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6423
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'5
Mới trong phiên bản 0. 25. 0
Cắt lát với lập chỉ mục chuỗi cũng tôn vinh phần bù UTC
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'6
lát vs. kết hợp chuẩn xác#
Cùng một chuỗi được sử dụng làm tham số lập chỉ mục có thể được coi là một lát cắt hoặc khớp chính xác tùy thuộc vào độ phân giải của chỉ mục. Nếu chuỗi kém chính xác hơn chỉ mục, nó sẽ được coi là một lát cắt, nếu không thì sẽ được coi là khớp chính xác
Xem xét một đối tượng
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02 với chỉ số độ phân giải phút
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'7
Chuỗi dấu thời gian kém chính xác hơn một phút cho đối tượng
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'8
Một chuỗi dấu thời gian có độ phân giải phút [hoặc chính xác hơn], thay vào đó đưa ra một đại lượng vô hướng, i. e. nó không được đúc thành một lát
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'9
Nếu độ phân giải chỉ mục là thứ hai, thì dấu thời gian chính xác theo phút sẽ cho kết quả
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]40
Nếu chuỗi dấu thời gian được coi là một lát cắt, nó cũng có thể được sử dụng để lập chỉ mục cho
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']03 với
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6428
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]41
Warning
Tuy nhiên, nếu chuỗi được coi là đối sánh chính xác, lựa chọn trong
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6430 của
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']03 sẽ là theo cột chứ không phải theo hàng, hãy xem Khái niệm cơ bản về lập chỉ mục. For example
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6431 will raise
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6432 as
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6433 has the same resolution as the index and there is no column with such name:
Để luôn có lựa chọn rõ ràng, cho dù hàng được coi là một lát cắt hay một lựa chọn duy nhất, hãy sử dụng
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6419
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]42
Cũng lưu ý rằng độ phân giải
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 không thể kém chính xác hơn ngày
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]43
Lập chỉ mục chính xác#
Như đã thảo luận trong phần trước, việc lập chỉ mục một
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 với một phần chuỗi phụ thuộc vào “độ chính xác” của khoảng thời gian, nói cách khác, mức độ cụ thể của khoảng thời gian liên quan đến độ phân giải của chỉ mục. Ngược lại, lập chỉ mục với các đối tượng
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 hoặc
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']08 là chính xác, bởi vì các đối tượng có ý nghĩa chính xác. Chúng cũng tuân theo ngữ nghĩa bao gồm cả hai điểm cuối
Các đối tượng
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 và
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']08 này có chính xác
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6441 và
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6442, mặc dù chúng không được chỉ định rõ ràng [chúng là
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6443]
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]44
không có mặc định
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]45
Cắt bớt & lập chỉ mục ưa thích #
Chức năng tiện ích
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6444 được cung cấp tương tự như cắt lát. Lưu ý rằng
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6445 giả định một giá trị 0 cho bất kỳ thành phần ngày không xác định nào trong một
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 trái ngược với cắt lát trả về bất kỳ ngày khớp một phần nào
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]46
Ngay cả việc lập chỉ mục ưa thích phức tạp phá vỡ tính đều đặn của tần số
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 sẽ dẫn đến một
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83, mặc dù tần số bị mất
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]47
Thành phần thời gian/ngày#
Có một số thuộc tính thời gian/ngày mà người ta có thể truy cập từ
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 hoặc tập hợp các dấu thời gian như
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83
Tài sản
Description
năm
Năm của ngày giờ
tháng
Tháng của ngày giờ
ngày
Những ngày của datetime
giờ
Giờ của ngày giờ
phút
Biên bản của ngày giờ
thứ hai
Giây của ngày giờ
phần triệu giây
Micro giây của ngày giờ
nano giây
Nano giây của ngày giờ
ngày
Trả về ngày giờ. ngày [không chứa thông tin múi giờ]
thời gian
Trả về ngày giờ. thời gian [không chứa thông tin múi giờ]
múi giờ
Trả về ngày giờ. thời gian là giờ địa phương với thông tin múi giờ
ngày của năm
Ngày thường trong năm
ngày_của_năm
Ngày thường trong năm
tuần của năm
Thứ tự tuần của năm
tuần
Thứ tự tuần của năm
ngày trong tuần
Số ngày trong tuần với Thứ hai = 0, Chủ nhật = 6
ngày trong tuần
Số ngày trong tuần với Thứ hai = 0, Chủ nhật = 6
ngày thường
Số ngày trong tuần với Thứ hai = 0, Chủ nhật = 6
phần tư
Quý của ngày. Tháng 1-tháng 3 = 1, tháng 4-tháng 6 = 2, v.v.
ngày_trong_tháng
Số ngày trong tháng của datetime
là_tháng_bắt đầu
Logic chỉ ra nếu ngày đầu tiên của tháng [được xác định theo tần suất]
là_tháng_cuối
Logic chỉ ra nếu ngày cuối cùng của tháng [được xác định theo tần suất]
is_quý_bắt đầu
Chỉ báo logic nếu ngày đầu tiên của quý [được xác định theo tần suất]
is_ quarter_end
Logic chỉ ra nếu ngày cuối cùng của quý [được xác định theo tần suất]
is_year_start
Logic chỉ ra nếu ngày đầu tiên của năm [được xác định bởi tần suất]
là_năm_cuối
Logic chỉ ra nếu ngày cuối cùng của năm [được xác định bởi tần suất]
is_leap_year
Logical indicating if the date belongs to a leap year
Hơn nữa, nếu bạn có một
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02 với các giá trị kiểu dữ liệu thời gian, thì bạn có thể truy cập các thuộc tính này thông qua trình truy cập
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6452, như được trình bày chi tiết trong phần trên . trình truy cập dt .
Mới trong phiên bản 1. 1. 0
Bạn có thể lấy các thành phần năm, tuần và ngày của năm ISO từ tiêu chuẩn ISO 8601
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]48
đối tượng DateOffset#
Trong các ví dụ trước, các chuỗi tần số [e. g.
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6453] đã được sử dụng để chỉ định tần suất được xác định
cách ngày giờ trong
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
83 được đặt cách nhau khi sử dụngIn [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']
81tần số của một
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
93 hoặcIn [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
94
Các chuỗi tần số này ánh xạ tới một đối tượng
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']98 và các lớp con của nó. Một
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']98 tương tự như một
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']88 đại diện cho một khoảng thời gian nhưng tuân theo các quy tắc về thời lượng lịch cụ thể. Ví dụ: ngày
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']88 sẽ luôn tăng
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6462 theo 24 giờ, trong khi ngày
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']98 sẽ tăng
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6462 vào cùng thời điểm của ngày hôm sau cho dù một ngày có 23, 24 hay 25 giờ do tiết kiệm thời gian ban ngày. Tuy nhiên, tất cả các phân lớp
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']98 có thời lượng một giờ hoặc nhỏ hơn [
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6466,
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6467,
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6468,
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6469,
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6470,
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6471] hoạt động giống như
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']88 và tôn trọng thời gian tuyệt đối
Cơ bản ________ 098 hoạt động tương tự như ________ 674 [tài liệu tương đối về đồng bằng] thay đổi ngày giờ theo khoảng thời gian lịch tương ứng được chỉ định. Toán tử số học [
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6475] có thể được sử dụng để thực hiện ca
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]49
Hầu hết
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6476 có chuỗi tần số liên quan hoặc bí danh bù, có thể được chuyển vào đối số từ khóa
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']93. Bạn có thể tìm thấy các giá trị bù ngày khả dụng và các chuỗi tần số liên quan bên dưới
Bù trừ ngày tháng
Chuỗi tần số
Description
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']98
Không có
Lớp bù chung, mặc định là 24 giờ tuyệt đối
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6479 hoặc
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6480
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6481
ngày làm việc [ngày thường]
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6482 hoặc
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6483
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6484
ngày làm việc tùy chỉnh
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6485
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6486
một tuần, tùy chọn neo vào một ngày trong tuần
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6487
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6488
ngày x của tuần thứ y mỗi tháng
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6489
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6490
ngày x của tuần cuối mỗi tháng
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6491
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6492
lịch cuối tháng
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6493
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6494
tháng dương lịch bắt đầu
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6495 hoặc
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6496
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6497
cuối tháng kinh doanh
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6498 hoặc
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6499
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'00
tháng làm việc bắt đầu
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'01 hoặc
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'02
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'03
cuối tháng kinh doanh tùy chỉnh
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'04 or
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'05
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'06
tháng kinh doanh tùy chỉnh bắt đầu
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'07
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'08
ngày 15 [hoặc ngày_của_tháng] và cuối tháng dương lịch
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'09
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'10
Ngày 15 [hoặc ngày_of_tháng khác] và tháng dương lịch bắt đầu
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'11
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'12
lịch cuối quý
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'13
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'14
bắt đầu quý dương lịch
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'15
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'16
cuối quý kinh doanh
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'17
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'18
bắt đầu quý kinh doanh
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'19
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'20
quý bán lẻ [hay còn gọi là tuần 52-53]
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'21
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'22
cuối năm dương lịch
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'23
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'24 hoặc
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'25
năm dương lịch bắt đầu
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'26
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'27
kinh doanh cuối năm
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'28
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'29
năm kinh doanh bắt đầu
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'30
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'31
bán lẻ [aka 52-53 tuần] năm
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'32
Không có
lễ Phục sinh
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'33
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'34
giờ làm việc
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'35
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'36
giờ làm việc tùy chỉnh
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'37
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6453
một ngày tuyệt đối
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6466
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'40
một giờ
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6467
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'42 hoặc
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'43
one minute
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6468
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'45
một giây
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6469
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'47 hoặc
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'48
một phần nghìn giây
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6470
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'50 hoặc
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'51
một phần triệu giây
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6471
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'53
một nano giây
Ngoài ra,
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6476 có các phương pháp
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'55 và
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'56 để di chuyển ngày tới hoặc lùi tương ứng với ngày bù hợp lệ so với ngày bù. Ví dụ: bù trừ doanh nghiệp sẽ chuyển các ngày rơi vào cuối tuần [thứ Bảy và Chủ nhật] sang thứ Hai vì bù trừ doanh nghiệp hoạt động vào các ngày trong tuần
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]70
Các thao tác này bảo toàn thông tin thời gian [giờ, phút, v.v.] theo mặc định. Để đặt lại thời gian về nửa đêm, hãy sử dụng
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'57 trước hoặc sau khi áp dụng thao tác [tùy thuộc vào việc bạn có muốn đưa thông tin thời gian vào thao tác hay không]
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]71
Độ lệch tham số #
Một số phần bù có thể được "tham số hóa" khi được tạo để dẫn đến các hành vi khác nhau. Ví dụ: phần bù
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6485 để tạo dữ liệu hàng tuần chấp nhận tham số
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'59 dẫn đến ngày được tạo luôn nằm trên một ngày cụ thể trong tuần
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]72
Tùy chọn
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'60 sẽ có hiệu lực đối với phép cộng và phép trừ
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]73
Một ví dụ khác là tham số hóa
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'21 với tháng kết thúc cụ thể
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]74
Sử dụng hiệu số với In [6]: dti = dti.tz_localize["UTC"]
In [7]: dti
Out[7]:
DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00',
'2018-01-01 02:00:00+00:00'],
dtype='datetime64[ns, UTC]', freq='H']
In [8]: dti.tz_convert["US/Pacific"]
Out[8]:
DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00',
'2017-12-31 18:00:00-08:00'],
dtype='datetime64[ns, US/Pacific]', freq='H']
02 / In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"]
In [5]: dti
Out[5]:
DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00',
'2018-01-01 02:00:00'],
dtype='datetime64[ns]', freq='H']
83#
Offset có thể được sử dụng với
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02 hoặc
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 để áp dụng offset cho từng phần tử
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]75
Nếu lớp offset ánh xạ trực tiếp tới một
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']88 [
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'37,
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6466,
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6467,
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6468,
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6470,
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6469,
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6471] thì nó có thể được sử dụng chính xác như một
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']88 - xem Timedelta . for more examples.
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]76
Lưu ý rằng một số độ lệch [chẳng hạn như
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'15] không có triển khai véc tơ. Chúng vẫn có thể được sử dụng nhưng có thể tính toán chậm hơn đáng kể và sẽ hiển thị
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'76
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]77
ngày làm việc tùy chỉnh#
Lớp
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6482 hoặc
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6483 cung cấp lớp tham số
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6480 có thể được sử dụng để tạo lịch ngày làm việc tùy chỉnh có tính đến các ngày lễ địa phương và quy ước cuối tuần địa phương
Như một ví dụ thú vị, hãy xem Ai Cập nơi có ngày cuối tuần từ Thứ Sáu đến Thứ Bảy
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]78
Hãy ánh xạ tới tên các ngày trong tuần
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]79
Lịch nghỉ lễ có thể được sử dụng để cung cấp danh sách ngày lễ. Xem phần lịch nghỉ lễ để biết thêm thông tin.
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']50
Có thể xác định chênh lệch hàng tháng theo lịch nghỉ lễ nhất định theo cách thông thường
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']51
Ghi chú
Chuỗi tần suất 'C' được sử dụng để chỉ ra rằng một CustomBusinessDay DateOffset được sử dụng, điều quan trọng cần lưu ý là vì CustomBusinessDay là một loại được tham số hóa nên các phiên bản của CustomBusinessDay có thể khác và điều này không thể phát hiện được từ chuỗi tần số 'C'. Do đó, người dùng cần đảm bảo rằng chuỗi tần số 'C' được sử dụng nhất quán trong ứng dụng của người dùng
Giờ làm việc#
Lớp ________ 733 cung cấp biểu diễn giờ làm việc trên ________ 680, cho phép sử dụng thời gian bắt đầu và kết thúc cụ thể
Theo mặc định,
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'33 sử dụng 9. 00 - 17. 00 dưới dạng giờ làm việc. Thêm
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'33 sẽ tăng
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 theo tần suất hàng giờ. If target
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 is out of business hours, move to the next business hour then increment it. Nếu kết quả vượt quá giờ làm việc kết thúc, số giờ còn lại sẽ được cộng vào ngày làm việc tiếp theo
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']52
Bạn cũng có thể chỉ định thời gian
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']90 và
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']91 theo từ khóa. Đối số phải là một
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'88 với một đại diện
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'89 hoặc một thể hiện
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'90. Chỉ định giây, micro giây và nano giây làm kết quả giờ làm việc trong
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'91
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']53
Vượt qua thời gian của
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']90 muộn hơn thời gian của
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']91 thể hiện giờ làm việc lúc nửa đêm. Trong trường hợp này, giờ làm việc vượt quá nửa đêm và trùng lặp sang ngày hôm sau. Giờ làm việc hợp lệ được phân biệt bằng việc nó có bắt đầu từ
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6480 hợp lệ hay không
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']54
Áp dụng
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'95 và
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'96 ngoài giờ làm việc dẫn đến bắt đầu giờ làm việc tiếp theo hoặc kết thúc của ngày hôm trước. Khác với các hiệu số khác, theo định nghĩa,
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'95 có thể tạo ra các kết quả khác với
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'98
Điều này là do giờ kết thúc làm việc của một ngày bằng với giờ bắt đầu làm việc của ngày hôm sau. Ví dụ: theo giờ làm việc mặc định [9. 00 - 17. 00], không có khoảng cách [0 phút] giữa
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'99 và
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]400
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']55
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'33 coi thứ bảy và chủ nhật là ngày nghỉ. Để sử dụng các ngày lễ tùy ý, bạn có thể sử dụng phần bù
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'35, như được giải thích trong tiểu mục sau
Giờ làm việc tùy chỉnh#
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'35 là sự kết hợp giữa
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'33 và
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6483, cho phép bạn chỉ định các ngày lễ tùy ý.
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'35 hoạt động giống như
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'33 ngoại trừ việc nó bỏ qua các ngày lễ tùy chỉnh được chỉ định
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']56
Bạn có thể sử dụng các đối số từ khóa được hỗ trợ bởi
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'33 và
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6483
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']57
Bí danh bù trừ #
Một số bí danh chuỗi được cung cấp cho các tần số chuỗi thời gian chung hữu ích. Chúng tôi sẽ gọi những bí danh này là bí danh bù
bí danh
Description
B
tần suất ngày làm việc
C
tần suất ngày làm việc tùy chỉnh
D
tần suất ngày dương lịch
W
tần suất hàng tuần
M
tần suất cuối tháng
SM
tần suất nửa tháng cuối [ngày 15 và cuối tháng]
BM
tần suất cuối tháng làm việc
CBM
tần suất cuối tháng kinh doanh tùy chỉnh
CÔ
tần suất bắt đầu tháng
tin nhắn
tần suất bắt đầu nửa tháng [ngày 1 và ngày 15]
BMS
tần suất bắt đầu tháng làm việc
CBMS
tần suất bắt đầu tháng làm việc tùy chỉnh
Q
tần suất cuối quý
BQ
tần suất cuối quý kinh doanh
QS
tần suất bắt đầu quý
BQS
business quarter start frequency
Một, Y
tần suất cuối năm
ĐỨA BÉ
tần suất cuối năm kinh doanh
NHƯ, YS
tần suất bắt đầu năm
CƠ SỞ, BẰNG
tần suất bắt đầu năm kinh doanh
BH
tần suất giờ làm việc
H
tần suất hàng giờ
T, phút
tần suất nhỏ
S
tần số thứ hai
l, ms
mili giây
bạn, chúng tôi
micro giây
N
nano giây
Ghi chú
Khi sử dụng các bí danh offset ở trên, cần lưu ý rằng các hàm như
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']81,In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']82, sẽ chỉ trả về dấu thời gian nằm trong khoảng thời gian được xác định bởiIn [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]412 vàIn [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]413. NếuIn [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]412 không tương ứng với tần suất, dấu thời gian được trả về sẽ bắt đầu ở dấu thời gian hợp lệ tiếp theo, tương tự đối vớiIn [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]413, dấu thời gian được trả về sẽ dừng ở dấu thời gian hợp lệ trước đó
Ví dụ: đối với phần bù
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]416, nếu
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]412 không phải là ngày đầu tiên của tháng, dấu thời gian được trả về sẽ bắt đầu bằng ngày đầu tiên của tháng tiếp theo. Nếu
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]413 không phải là ngày đầu tiên của tháng, dấu thời gian được trả về cuối cùng sẽ là ngày đầu tiên của tháng tương ứng
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']58
Chúng ta có thể thấy trong ví dụ trên,
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']81 và
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']82 sẽ chỉ trả về dấu thời gian hợp lệ giữa
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]412 và
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]413. Nếu đây không phải là dấu thời gian hợp lệ cho tần suất đã cho, nó sẽ chuyển sang giá trị tiếp theo cho
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]412 [tương ứng trước đó cho
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]413]
Kết hợp các bí danh#
Như chúng ta đã thấy trước đây, bí danh và đối tượng offset có thể thay thế được trong hầu hết các hàm
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']59
Bạn có thể kết hợp bù trừ trong ngày và trong ngày với nhau
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']80
Độ lệch cố định #
Đối với một số tần số, bạn có thể chỉ định hậu tố neo
bí danh
Description
W-SUN
tần suất hàng tuần [Chủ Nhật]. Giống như 'W'
W-MON
tần suất hàng tuần [Thứ Hai]
W-TUE
tần suất hàng tuần [Thứ Ba]
W-WED
tần suất hàng tuần [Thứ Tư]
W-THU
tần suất hàng tuần [thứ Năm]
W-FRI
tần suất hàng tuần [thứ sáu]
W-SAT
tần suất hàng tuần [thứ bảy]
[B]Q[S]-DEC
tần suất hàng quý, năm kết thúc vào tháng 12. Tương tự như 'Q'
[B]Q[S]-JAN
tần suất hàng quý, năm kết thúc vào tháng 1
[B]Q[S]-THÁNG 2
tần suất hàng quý, năm kết thúc vào tháng 2
[B]Q[S]-MAR
quarterly frequency, year ends in March
[B]Q[S]-APR
tần suất hàng quý, năm kết thúc vào tháng 4
[B]Q[S]-MAY
tần suất hàng quý, năm kết thúc vào tháng 5
[B]Q[S]-JUN
tần suất hàng quý, năm kết thúc vào tháng 6
[B]Q[S]-THÁNG 7
tần suất hàng quý, năm kết thúc vào tháng 7
[B]Q[S]-AUG
tần suất hàng quý, năm kết thúc vào tháng 8
[B]Q[S]-SEP
tần suất hàng quý, năm kết thúc vào tháng 9
[B]Q[S]-OCT
tần suất hàng quý, năm kết thúc vào tháng 10
[B]Q[S]-THÁNG 11
tần suất hàng quý, năm kết thúc vào tháng 11
[B]A[S]-DEC
tần suất hàng năm, thả neo vào cuối tháng 12. Giống như 'A'
[B]A[S]-JAN
tần suất hàng năm, neo vào cuối tháng Giêng
[B]A[S]-THÁNG 2
tần suất hàng năm, thả neo vào cuối tháng 2
[B]A[S]-MAR
tần suất hàng năm, thả neo vào cuối tháng 3
[B]A[S]-APR
tần suất hàng năm, thả neo vào cuối tháng 4
[B]A[S]-MAY
tần suất hàng năm, thả neo vào cuối tháng 5
[B]A[S]-JUN
tần suất hàng năm, thả neo vào cuối tháng 6
[B]A[S]-THÁNG 7
tần suất hàng năm, thả neo vào cuối tháng 7
[B]A[S]-AUG
tần suất hàng năm, thả neo vào cuối tháng 8
[B]A[S]-SEP
tần suất hàng năm, thả neo vào cuối tháng 9
[B]A[S]-THÁNG 10
tần suất hàng năm, thả neo vào cuối tháng 10
[B]A[S]-THÁNG 11
tần suất hàng năm, thả neo vào cuối tháng 11
Chúng có thể được sử dụng làm đối số cho
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']87,
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']85, hàm tạo cho
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83, cũng như nhiều hàm liên quan đến chuỗi thời gian khác trong gấu trúc
Ngữ nghĩa bù đắp cố định #
Đối với những độ lệch được cố định ở đầu hoặc cuối của tần suất cụ thể [
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6491,
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6493,
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]430, v.v.], các quy tắc sau áp dụng cho việc lăn tiến và lùi
Khi
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]431 không phải là 0, nếu ngày đã cho không nằm trên một điểm neo, nó sẽ chuyển sang điểm neo tiếp theo [trước đó] và di chuyển
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]432 thêm các bước tiến hoặc lùi
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']81
Nếu ngày đã cho nằm trên một điểm neo, nó sẽ được di chuyển _______3433 điểm về phía trước hoặc phía sau
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82
Đối với trường hợp khi
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]434, ngày không được di chuyển nếu trên một điểm neo, nếu không, nó sẽ được chuyển tới điểm neo tiếp theo
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83
Ngày lễ / lịch nghỉ lễ#
Ngày lễ và lịch cung cấp một cách đơn giản để xác định các quy tắc ngày lễ sẽ được sử dụng với
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6483 hoặc trong phân tích khác yêu cầu tập hợp các ngày lễ được xác định trước. Lớp
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]436 cung cấp tất cả các phương thức cần thiết để trả về danh sách các ngày lễ và chỉ cần xác định
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]437 trong một lớp lịch nghỉ lễ cụ thể. Hơn nữa, các thuộc tính lớp
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]412 và
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]413 xác định phạm vi ngày các ngày lễ được tạo. Chúng nên được ghi đè lên lớp
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]436 để có phạm vi áp dụng cho tất cả các lớp con lịch.
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]441 is the only calendar that exists and primarily serves as an example for developing other calendars
Đối với những ngày lễ diễn ra vào những ngày cố định [e. g. , Ngày tưởng niệm Hoa Kỳ hoặc ngày 4 tháng 7] một quy tắc tuân thủ xác định thời điểm lễ đó được thực hiện nếu nó rơi vào cuối tuần hoặc một số ngày không được tuân thủ khác. Các quy tắc tuân thủ được xác định là
Qui định
Description
ngày làm việc gần nhất
di chuyển Thứ Bảy đến Thứ Sáu và Chủ nhật đến Thứ Hai
chủ nhật_đến_thứ hai
chuyển Chủ Nhật sang Thứ Hai tuần sau
next_monday_or_tuesday
di chuyển Thứ Bảy đến Thứ Hai và Chủ Nhật/Thứ Hai đến Thứ Ba
trước_thứ sáu
chuyển Thứ Bảy và Chủ Nhật sang Thứ Sáu trước đó”
next_monday
chuyển thứ bảy và chủ nhật sang thứ hai tuần sau
Ví dụ về cách xác định ngày lễ và lịch nghỉ lễ
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']84dấu
ngày trong tuần=MO[2] giống như 2 * Tuần[ngày trong tuần=2]
Sử dụng lịch này, việc tạo chỉ mục hoặc thực hiện phép tính bù trừ sẽ bỏ qua các ngày cuối tuần và ngày lễ [i. e. , Ngày tưởng niệm/ngày 4 tháng 7]. For example, the below defines a custom business day offset using the
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]442. Like any other offset, it can be used to create a
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 or added to
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']08 or
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 objects
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']85
Ranges are defined by the
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]412 and
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]413 class attributes of
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]436. The defaults are shown below
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']86
These dates can be overwritten by setting the attributes as datetime/Timestamp/string
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']87
Every calendar class is accessible by name using the
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]449 function which returns a holiday class instance. Any imported calendar class will automatically be available by this function. Also,
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]450 provides an easy interface to create calendars that are combinations of calendars or calendars with additional rules
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']88
Time Series-related instance methods#
Shifting / lagging#
One may want to shift or lag the values in a time series back and forward in time. The method for this is
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]451, which is available on all of the pandas objects
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']89
The
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6406 method accepts an
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']93 argument which can accept a
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']98 class or other
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']09-like object or also an offset alias .
When
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']93 is specified,
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6406 method changes all the dates in the index rather than changing the alignment of the data and the index
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']90
Note that with when
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']93 is specified, the leading entry is no longer NaN because the data is not being realigned
Frequency conversion#
The primary function for changing frequencies is the
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]459 method. For a
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83, this is basically just a thin, but convenient wrapper around
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]461 which generates a
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']87 and calls
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]463
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']91
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]464 provides a further convenience so you can specify an interpolation method for any gaps that may appear after the frequency conversion
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']92
Filling forward / backward#
Related to
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]464 and
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]463 is
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]467, which is documented in the missing data section .
Converting to Python datetimes#
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 có thể được chuyển đổi thành một mảng các đối tượng
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']78 gốc của Python bằng cách sử dụng phương thức
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]470
Resampling#
pandas has a simple, powerful, and efficient functionality for performing resampling operations during frequency conversion [e. g. , converting secondly data into 5-minutely data]. This is extremely common in, but not limited to, financial applications
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]471 is a time-based groupby, followed by a reduction method on each of its groups. See some cookbook examples for some advanced strategies.
The
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]471 method can be used directly from
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]473 objects, see the groupby docs .
Basics#
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93
The
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]474 function is very flexible and allows you to specify many different parameters to control the frequency conversion and resampling operation
Bất kỳ chức năng nào có sẵn thông qua dispatching đều khả dụng dưới dạng một phương thức của đối tượng được trả về, bao gồm
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]475,
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]476,
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]477,
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]478,
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]479,
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]480 .
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94
For downsampling,
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]485 can be set to ‘left’ or ‘right’ to specify which end of the interval is closed
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']95
Parameters like
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]486 are used to manipulate the resulting labels.
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]486 specifies whether the result is labeled with the beginning or the end of the interval
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']96
Warning
The default values for
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]486 and
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]485 is ‘left’ for all frequency offsets except for ‘M’, ‘A’, ‘Q’, ‘BM’, ‘BA’, ‘BQ’, and ‘W’ which all have a default of ‘right’
This might unintendedly lead to looking ahead, where the value for a later time is pulled back to a previous time as in the following example with the
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6480 frequency
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']97
Notice how the value for Sunday got pulled back to the previous Friday. To get the behavior where the value for Sunday is pushed to Monday, use instead
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']98
The
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]491 parameter can be set to 0 or 1 and allows you to resample the specified axis for a
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']03
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]493 can be set to ‘timestamp’ or ‘period’ to convert the resulting index to/from timestamp and time span representations. By default
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]474 retains the input representation
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]495 can be set to ‘start’ or ‘end’ when resampling period data [detail below]. It specifies how low frequency periods are converted to higher frequency periods
Upsampling#
For upsampling, you can specify a way to upsample and the
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]496 parameter to interpolate over the gaps that are created
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']99
Sparse resampling#
Sparse timeseries are the ones where you have a lot fewer points relative to the amount of time you are looking to resample. Naively upsampling a sparse series can potentially generate lots of intermediate values. When you don’t want to use a method to fill these values, e. g.
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]497 is
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']99, then intermediate values will be filled with
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]499
Since
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]474 is a time-based groupby, the following is a method to efficiently resample only the groups that are not all
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]499
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']00
If we want to resample to the full range of the series
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']01
We can instead only resample those groups where we have points as follows
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']02
Aggregation#
Similar to the aggregating API , groupby API , and the window API , a
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]702 can be selectively resampled.
Resampling a
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']03, the default will be to act on all columns with the same function
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']03
We can select a specific column or columns using standard getitem
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']04
You can pass a list or dict of functions to do aggregation with, outputting a
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']03
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']05
On a resampled
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']03, you can pass a list of functions to apply to each column, which produces an aggregated result with a hierarchical index
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']06
By passing a dict to
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]706 you can apply a different aggregation to the columns of a
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']03
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']07
The function names can also be strings. Để một chuỗi hợp lệ, nó phải được triển khai trên đối tượng được lấy mẫu lại
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']08
Furthermore, you can also specify multiple aggregation functions for each column separately
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']09
If a
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']03 does not have a datetimelike index, but instead you want to resample based on datetimelike column in the frame, it can passed to the
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]709 keyword
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']10
Tương tự, thay vào đó, nếu bạn muốn lấy mẫu lại theo cấp độ giống như thời gian của
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6423, tên hoặc vị trí của nó có thể được chuyển đến từ khóa
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]711
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']11
Iterating through groups#
Với đối tượng
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]702 trong tay, việc lặp qua dữ liệu được nhóm là rất tự nhiên và hoạt động tương tự như
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]713
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']12
See Iterating through groups or
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]714 for more.
Use In [6]: dti = dti.tz_localize["UTC"]
In [7]: dti
Out[7]:
DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00',
'2018-01-01 02:00:00+00:00'],
dtype='datetime64[ns, UTC]', freq='H']
In [8]: dti.tz_convert["US/Pacific"]
Out[8]:
DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00',
'2017-12-31 18:00:00-08:00'],
dtype='datetime64[ns, US/Pacific]', freq='H']
65 or In [1]: import datetime
In [2]: dti = pd.to_datetime[
...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]]
...: ]
...:
In [3]: dti
Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]
716 to adjust the start of the bins#
Mới trong phiên bản 1. 1. 0
The bins of the grouping are adjusted based on the beginning of the day of the time series starting point. This works well with frequencies that are multiples of a day [like
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]717] or that divide a day evenly [like
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]718 or
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]719]. This can create inconsistencies with some frequencies that do not meet this criteria. To change this behavior you can specify a fixed Timestamp with the argument
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']65
For example
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']13
Here we can see that, when using
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']65 with its default value [
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]722], the result after
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]723 are not identical depending on the start of time series
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']14
Here we can see that, when setting
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']65 to
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]725, the result after
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]723 are identical depending on the start of time series
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']15
If needed you can use a custom timestamp for
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']65
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']16
If needed you can just adjust the bins with an
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]716 Timedelta that would be added to the default
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']65. Those two examples are equivalent for this time series
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']17
Note the use of
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]730 for
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']65 on the last example. In that case,
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']65 will be set to the first value of the timeseries
Backward resample#
New in version 1. 3. 0
Instead of adjusting the beginning of bins, sometimes we need to fix the end of the bins to make a backward resample with a given
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']93. The backward resample sets
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]485 to
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]735 by default since the last value should be considered as the edge point for the last bin
We can set
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']65 to
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]737. The value for a specific
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 index stands for the resample result from the current
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 minus
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']93 to the current
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 with a right close
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']18
Besides, in contrast with the
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]722 option,
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]743 is supported. This will set the origin as the ceiling midnight of the largest
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']19
Kết quả trên sử dụng
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]745 làm cạnh phải của thùng cuối cùng kể từ lần tính toán sau
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']20
Time span representation#
Regular intervals of time are represented by
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93 objects in pandas while sequences of
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93 objects are collected in a
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94, which can be created with the convenience function
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']97
Period#
A
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93 represents a span of time [e. g. , a day, a month, a quarter, etc]. You can specify the span via
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']93 keyword using a frequency alias like below. Because
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']93 represents a span of
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93, it cannot be negative like “-3D”
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']21
Adding and subtracting integers from periods shifts the period by its own frequency. Arithmetic is not allowed between
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93 with different
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']93 [span]
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']22
If
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93 freq is daily or higher [
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]757,
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]758,
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]759,
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]760,
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]761,
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]762,
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]763],
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]764 and
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']09-like can be added if the result can have the same freq. Otherwise,
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'91 will be raised
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']23
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']24
If
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93 has other frequencies, only the same
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]764 can be added. Nếu không,
In [13]: friday = pd.Timestamp["2018-01-05"] In [14]: friday.day_name[] Out[14]: 'Friday' # Add 1 day In [15]: saturday = friday + pd.Timedelta["1 day"] In [16]: saturday.day_name[] Out[16]: 'Saturday' # Add 1 business day [Friday --> Monday] In [17]: monday = friday + pd.offsets.BDay[] In [18]: monday.day_name[] Out[18]: 'Monday'91 sẽ được nâng lên
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']25
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']26
Taking the difference of
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93 instances with the same frequency will return the number of frequency units between them
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']27
PeriodIndex and period_range#
Regular sequences of
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93 objects can be collected in a
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94, which can be constructed using the
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']97 convenience function
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']28
The
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94 constructor can also be used directly
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']29
Passing multiplied frequency outputs a sequence of
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93 which has multiplied span
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']30
If
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']90 or
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']91 are
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93 objects, they will be used as anchor endpoints for a
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94 with frequency matching that of the
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94 constructor
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']31
Just like
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83, a
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94 can also be used to index pandas objects
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']32
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94 supports addition and subtraction with the same rule as
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']33
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94 has its own dtype named
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]786, refer to Period Dtypes .
Period dtypes#
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94 has a custom
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]786 dtype. This is a pandas extension dtype similar to the timezone aware dtype [
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']85].
The
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]786 dtype holds the
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']93 attribute and is represented with
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']95 like
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]793 or
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]794, using frequency strings .
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']34
The
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]786 dtype can be used in
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]796. It allows one to change the
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']93 of a
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94 like
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]799 and convert a
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 to
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94 like
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']502
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']35
PeriodIndex partial string indexing#
PeriodIndex now supports partial string slicing with non-monotonic indexes
Mới trong phiên bản 1. 1. 0
You can pass in dates and strings to
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02 and
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']03 with
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94, in the same manner as
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83. For details, refer to DatetimeIndex Partial String Indexing .
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']36
Passing a string representing a lower frequency than
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94 returns partial sliced data
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']37
As with
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83, the endpoints will be included in the result. The example below slices data starting from 10. 00 to 11. 59
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']38
Frequency conversion and resampling with PeriodIndex#
The frequency of
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']93 and
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94 can be converted via the
In [1]: import datetime In [2]: dti = pd.to_datetime[ ...: ["1/1/2018", np.datetime64["2018-01-01"], datetime.datetime[2018, 1, 1]] ...: ] ...: In [3]: dti Out[3]: DatetimeIndex[['2018-01-01', '2018-01-01', '2018-01-01'], dtype='datetime64[ns]', freq=None]464 method. Let’s start with the fiscal year 2011, ending in December
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']39
We can convert it to a monthly frequency. Using the
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']512 parameter, we can specify whether to return the starting or ending month
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']40
The shorthands ‘s’ and ‘e’ are provided for convenience
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']41
Converting to a “super-period” [e. g. , annual frequency is a super-period of quarterly frequency] automatically returns the super-period that includes the input period
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']42
Note that since we converted to an annual frequency that ends the year in November, the monthly period of December 2011 is actually in the 2012 A-NOV period
Period conversions with anchored frequencies are particularly useful for working with various quarterly data common to economics, business, and other fields. Many organizations define quarters relative to the month in which their fiscal year starts and ends. Thus, first quarter of 2011 could start in 2010 or a few months into 2011. Via anchored frequencies, pandas works for all quarterly frequencies
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']513 through
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']514
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']514 define regular calendar quarters
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']43
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']516 defines fiscal year end in March
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']44
Converting between representations#
Timestamped data can be converted to PeriodIndex-ed data using
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']517 and vice-versa using
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']518
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']45
Remember that ‘s’ and ‘e’ can be used to return the timestamps at the start or end of the period
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']46
Converting between period and timestamp enables some convenient arithmetic functions to be used. In the following example, we convert a quarterly frequency with year ending in November to 9am of the end of the month following the quarter end
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']47
Representing out-of-bounds spans#
If you have data that is outside of the
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 bounds, see Timestamp limitations , then you can use a
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94 and/or
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02 of
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']522 to do computations.
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']48
To convert from an
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']523 based YYYYMMDD representation
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']49
These can easily be converted to a
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']94
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']50
Time zone handling#
pandas provides rich support for working with timestamps in different time zones using the
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']525 and
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']81 libraries or
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']527 objects from the standard library
Working with time zones#
By default, pandas objects are time zone unaware
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']51
To localize these dates to a time zone [assign a particular time zone to a naive date], you can use the
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']528 method or the
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']71 keyword argument in
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']81,
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82, or
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83. You can either pass
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']525 or
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']81 time zone objects or Olson time zone database strings. Olson time zone strings will return
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']525 time zone objects by default. To return
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']81 time zone objects, append
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']537 before the string
In
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
525 you can find a list of common [and less common] time zones usingIn [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
539In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
81 uses the OS time zones so there isn’t a fixed list available. Đối với các khu vực chung, tên giống nhưIn [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
525
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']52
Mới trong phiên bản 0. 25. 0
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']53
Note that the
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']542 time zone is a special case in
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']81 and should be constructed explicitly as an instance of
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']544. You can also construct other time zones objects explicitly first
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']54
To convert a time zone aware pandas object from one time zone to another, you can use the
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']545 method
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']55
Ghi chú
When using
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']525 time zones,
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 will construct a different time zone object than a
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 for the same time zone input. A
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 can hold a collection of
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 objects that may have different UTC offsets and cannot be succinctly represented by one
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']525 time zone instance while one
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 represents one point in time with a specific UTC offset
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']56
Warning
Be wary of conversions between libraries. For some time zones,
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']525 and
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']81 have different definitions of the zone. This is more of a problem for unusual time zones than for ‘standard’ zones like
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']555
Warning
Be aware that a time zone definition across versions of time zone libraries may not be considered equal. This may cause problems when working with stored data that is localized using one version and operated on with a different version. See here for how to handle such a situation.
Warning
For
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']525 time zones, it is incorrect to pass a time zone object directly into the
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']78 constructor [e. g. ,
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']558. Instead, the datetime needs to be localized using the
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']559 method on the
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']525 time zone object
Warning
Be aware that for times in the future, correct conversion between time zones [and UTC] cannot be guaranteed by any time zone library because a timezone’s offset from UTC may be changed by the respective government
Warning
If you are using dates beyond 2038-01-18, due to current deficiencies in the underlying libraries caused by the year 2038 problem, daylight saving time [DST] adjustments to timezone aware dates will not be applied. If and when the underlying libraries are fixed, the DST transitions will be applied
For example, for two dates that are in British Summer Time [and so would normally be GMT+1], both the following asserts evaluate as true
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']57
Under the hood, all timestamps are stored in UTC. Values from a time zone aware
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']83 or
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 will have their fields [day, hour, minute, etc. ] localized to the time zone. However, timestamps with the same UTC value are still considered to be equal even if they are in different time zones
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']58
Operations between
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02 in different time zones will yield UTC
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02, aligning the data on the UTC timestamps
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']59
To remove time zone information, use
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']565 or
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']566.
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']565 will remove the time zone yielding the local time representation.
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']566 will remove the time zone after converting to UTC time
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']60
Fold#
Mới trong phiên bản 1. 1. 0
For ambiguous times, pandas supports explicitly specifying the keyword-only fold argument. Due to daylight saving time, one wall clock time can occur twice when shifting from summer to winter time; fold describes whether the datetime-like corresponds to the first [0] or the second time [1] the wall clock hits the ambiguous time. Fold is supported only for constructing from naive
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']78 [see datetime documentation for details] or from
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']82 or for constructing from components [see below]. Only
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']81 timezones are supported [see dateutil documentation for
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']81 methods that deal with ambiguous datetimes] as
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']525 timezones do not support fold [see pytz documentation for details on how
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']525 deals with ambiguous datetimes]. To localize an ambiguous datetime with
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']525, please use
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']576. In general, we recommend to rely on
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']576 when localizing ambiguous datetimes if you need direct control over how they are handled
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']61
Ambiguous times when localizing#
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']528 may not be able to determine the UTC offset of a timestamp because daylight savings time [DST] in a local time zone causes some times to occur twice within one day [“clocks fall back”]. The following options are available
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
579. Raises aIn [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
580 [the default behavior]In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
581. Attempt to determine the correct offset base on the monotonicity of the timestampsIn [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
582. Replaces ambiguous times withIn [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']
13In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
584.In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
585 đại diện cho thời gian DST,In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
586 đại diện cho thời gian không phải DST. An array-like ofIn [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
584 values is supported for a sequence of times
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']62
This will fail as there are ambiguous times [
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']588]
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']63
Handle these ambiguous times by specifying the following
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']64
Nonexistent times when localizing#
A DST transition may also shift the local time ahead by 1 hour creating nonexistent local times [“clocks spring forward”]. The behavior of localizing a timeseries with nonexistent times can be controlled by the
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']589 argument. The following options are available
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
579. Raises aIn [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
591 [the default behavior]In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
582. Thay thế thời gian không tồn tại bằngIn [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']
13In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
594. Shifts nonexistent times forward to the closest real timeIn [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']
595. Shifts nonexistent times backward to the closest real timetimedelta object. Shifts nonexistent times by the timedelta duration
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']65
Localization of nonexistent times will raise an error by default
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']66
Transform nonexistent times to
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']13 or shift the times
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']67
Múi giờ Chuỗi hoạt động#
A
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02 with time zone naive values is represented with a dtype of
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']84
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']68
A
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02 with a time zone aware values is represented with a dtype of
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']85 where
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']71 is the time zone
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']69
Both of these
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02 time zone information can be manipulated via the
In [9]: idx = pd.date_range["2018-01-01", periods=5, freq="H"] In [10]: ts = pd.Series[range[len[idx]], index=idx] In [11]: ts Out[11]: 2018-01-01 00:00:00 0 2018-01-01 01:00:00 1 2018-01-01 02:00:00 2 2018-01-01 03:00:00 3 2018-01-01 04:00:00 4 Freq: H, dtype: int64 In [12]: ts.resample["2H"].mean[] Out[12]: 2018-01-01 00:00:00 0.5 2018-01-01 02:00:00 2.5 2018-01-01 04:00:00 4.0 Freq: 2H, dtype: float6452 accessor, see the dt accessor section .
For example, to localize and convert a naive stamp to time zone aware
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']70
Time zone information can also be manipulated using the
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']804 method. This method can convert between different timezone-aware dtypes
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']71
Ghi chú
Using
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']805 on a
In [6]: dti = dti.tz_localize["UTC"] In [7]: dti Out[7]: DatetimeIndex[['2018-01-01 00:00:00+00:00', '2018-01-01 01:00:00+00:00', '2018-01-01 02:00:00+00:00'], dtype='datetime64[ns, UTC]', freq='H'] In [8]: dti.tz_convert["US/Pacific"] Out[8]: DatetimeIndex[['2017-12-31 16:00:00-08:00', '2017-12-31 17:00:00-08:00', '2017-12-31 18:00:00-08:00'], dtype='datetime64[ns, US/Pacific]', freq='H']02, returns a NumPy array of the data. NumPy does not currently support time zones [even though it is printing in the local time zone. ], do đó, một mảng đối tượng Dấu thời gian được trả về cho dữ liệu nhận biết múi giờ
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']72
By converting to an object array of Timestamps, it preserves the time zone information. For example, when converting back to a Series
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']73
However, if you want an actual NumPy
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']84 array [with the values converted to UTC] instead of an array of objects, you can specify the
In [4]: dti = pd.date_range["2018-01-01", periods=3, freq="H"] In [5]: dti Out[5]: DatetimeIndex[['2018-01-01 00:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00'], dtype='datetime64[ns]', freq='H']808 argument