Skip to content

Creating Date Ranges

The pd.date_range() function generates sequences of dates with various frequencies and options.

Basic date_range

Generate date sequences.

1. With Periods

import pandas as pd

dates = pd.date_range('2025-01-01', periods=6)
print(dates)
DatetimeIndex(['2025-01-01', '2025-01-02', '2025-01-03', '2025-01-04',
               '2025-01-05', '2025-01-06'],
              dtype='datetime64[ns]', freq='D')

2. With End Date

dates = pd.date_range(start='2025-01-01', end='2025-01-10')

3. Specify Start and Periods

dates = pd.date_range(start='2025-01-01', periods=10, freq='D')

Frequency Options

Control the interval between dates.

1. Common Frequencies

pd.date_range('2025-01-01', periods=5, freq='D')   # Daily
pd.date_range('2025-01-01', periods=5, freq='W')   # Weekly
pd.date_range('2025-01-01', periods=5, freq='M')   # Month end
pd.date_range('2025-01-01', periods=5, freq='Y')   # Year end

2. Business Frequencies

pd.date_range('2025-01-01', periods=5, freq='B')   # Business days
pd.date_range('2025-01-01', periods=5, freq='BM')  # Business month end
pd.date_range('2025-01-01', periods=5, freq='BQ')  # Business quarter end

3. Intraday Frequencies

pd.date_range('2025-01-01', periods=5, freq='H')   # Hourly
pd.date_range('2025-01-01', periods=5, freq='T')   # Minute
pd.date_range('2025-01-01', periods=5, freq='S')   # Second

Using with DataFrames

Create time-indexed DataFrames.

1. As Index

import numpy as np

dates = pd.date_range('2025-01-01', periods=6)
df = pd.DataFrame(
    np.random.randn(6, 4),
    index=dates,
    columns=list('ABCD')
)
print(df)

2. As Column

df = pd.DataFrame({
    'date': pd.date_range('2025-01-01', periods=5),
    'value': [100, 101, 102, 103, 104]
})

3. Set as Index

df = df.set_index('date')

Period Ranges

Alternative to DatetimeIndex for periods.

1. period_range

periods = pd.period_range('2025-01', periods=6, freq='M')
print(periods)
PeriodIndex(['2025-01', '2025-02', '2025-03', '2025-04', '2025-05', '2025-06'],
            dtype='period[M]')

2. Month Periods

months = pd.period_range('2025-01', '2025-12', freq='M')

3. Quarter Periods

quarters = pd.period_range('2025Q1', periods=4, freq='Q')

Practical Examples

Common date range patterns.

1. Trading Days

# US trading days for 2025
trading_days = pd.date_range('2025-01-01', '2025-12-31', freq='B')

2. Monthly Data Points

# End of each month
month_ends = pd.date_range('2025-01-31', periods=12, freq='M')

3. Specific Time Intervals

# Every 6 hours
timestamps = pd.date_range('2025-01-01', periods=24, freq='6H')