Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

pandas.Period for a custom time period

I want to create pandas.Period for a custom time period, for example for a duration starting_time = pd.Timestamp('2024-01-01 09:15:00') and ending_time = pd.Timestamp('2024-01-05 08:17:00').

One way to achieving this is by first getting the pandas.Timedelta and then create pandas.Period.

import pandas as pd

# Define start and end times
starting_time = pd.Timestamp('2024-01-01 09:15:00')
ending_time   = pd.Timestamp('2024-01-05 08:17:00')

# Calculate the duration (period) between the two timestamps
period_duration = ending_time - starting_time
period_duration_in_minutes = (period_duration.total_seconds()) //60

freq_str = f"{period_duration_in_minutes}min"
period = pd.Period(starting_time, freq = freq_str)

print(period.start_time)
print(period.end_time)

But I need a straightforward approach, something like this (I know this won’t work)-

period = pd.Period(start_time = starting_time, end_time=ending_time)
like image 673
pkj Avatar asked Jan 22 '26 22:01

pkj


1 Answers

You don't need to compute the duration in minutes, just pass the subtraction:

pd.Period(starting_time, freq=ending_time-starting_time)

Which is almost your ideal straightforward approach.

Output:

Period('2024-01-01 09:15', '5702min')

Note that you could also use a function to have the desired parameters:

def cust_period(start, end):
    return pd.Period(value=start, freq=end-start)

cust_period(starting_time, ending_time)
# Period('2024-01-01 09:15', '5702min')
like image 182
mozway Avatar answered Jan 24 '26 13:01

mozway



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!