Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
Python Pandas - Round a DateTimeIndex with frequency as multiples of a single unit
To round a DateTimeIndex with frequency as multiples of a single unit, use the DateTimeIndex.round() method. The freq parameter accepts multipliers like '10T' for 10 minutes or '30S' for 30 seconds.
Syntax
DateTimeIndex.round(freq)
Where freq is the frequency string with optional multiplier (e.g., '10T', '5H', '30S').
Creating a DateTimeIndex
First, let's create a DateTimeIndex with precise timestamps ?
import pandas as pd
# DatetimeIndex with period 5 and frequency as H i.e. hours
# timezone is Australia/Adelaide
datetimeindex = pd.date_range('2021-09-29 07:20:32.261811624', periods=5,
tz='Australia/Adelaide', freq='H')
# Display DateTimeIndex
print("DateTimeIndex...\n", datetimeindex)
# Display DateTimeIndex frequency
print("DateTimeIndex frequency...\n", datetimeindex.freq)
DateTimeIndex...
DatetimeIndex(['2021-09-29 07:20:32.261811624+09:30',
'2021-09-29 08:20:32.261811624+09:30',
'2021-09-29 09:20:32.261811624+09:30',
'2021-09-29 10:20:32.261811624+09:30',
'2021-09-29 11:20:32.261811624+09:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq='H')
DateTimeIndex frequency...
<Hour>
Rounding with Multiple Unit Frequency
Round the DateTimeIndex to 10-minute intervals using '10T' frequency ?
import pandas as pd
datetimeindex = pd.date_range('2021-09-29 07:20:32.261811624', periods=5,
tz='Australia/Adelaide', freq='H')
# Round a DateTimeIndex with 10 minutes frequency i.e. multiples of a single unit
# For minutes frequency, we use 'T'
rounded_index = datetimeindex.round(freq='10T')
print("Performing round operation with multiples of a single unit frequency...\n", rounded_index)
Performing round operation with multiples of a single unit frequency...
DatetimeIndex(['2021-09-29 07:20:00+09:30', '2021-09-29 08:20:00+09:30',
'2021-09-29 09:20:00+09:30', '2021-09-29 10:20:00+09:30',
'2021-09-29 11:20:00+09:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq=None)
Common Frequency Multipliers
Here are examples of different frequency multipliers you can use ?
import pandas as pd
# Create DateTimeIndex with more precise timestamps
datetimeindex = pd.date_range('2021-09-29 07:23:45.123456', periods=3, freq='17T')
print("Original DateTimeIndex:")
print(datetimeindex)
print("\nRounding to 30 seconds (30S):")
print(datetimeindex.round('30S'))
print("\nRounding to 5 minutes (5T):")
print(datetimeindex.round('5T'))
print("\nRounding to 2 hours (2H):")
print(datetimeindex.round('2H'))
Original DateTimeIndex:
DatetimeIndex(['2021-09-29 07:23:45.123456', '2021-09-29 07:40:45.123456',
'2021-09-29 07:57:45.123456'],
dtype='datetime64[ns]', freq='17T')
Rounding to 30 seconds (30S):
DatetimeIndex(['2021-09-29 07:23:30', '2021-09-29 07:40:30',
'2021-09-29 07:57:30'],
dtype='datetime64[ns]', freq=None)
Rounding to 5 minutes (5T):
DatetimeIndex(['2021-09-29 07:25:00', '2021-09-29 07:40:00',
'2021-09-29 08:00:00'],
dtype='datetime64[ns]', freq=None)
Rounding to 2 hours (2H):
DatetimeIndex(['2021-09-29 08:00:00', '2021-09-29 08:00:00',
'2021-09-29 08:00:00'],
dtype='datetime64[ns]', freq=None)
Conclusion
Use DateTimeIndex.round() with frequency multipliers like '10T', '30S', or '2H' to round timestamps to specific intervals. This is useful for data aggregation and time-based grouping operations.
Advertisements
