Home > Software design >  Incrementing datetime object by with a range
Incrementing datetime object by with a range

Time:10-06

I've got the following column in my pandas dataframe. My intention is to increment each hour by 1 within a certain range(0,10). I could easily say: df['time'] = np.arange(0,10) to get those values, however I lose the datetime formatting.

Datetime column in pandas dataframe

To create the the datetime, I used the following code:

df['time'] = (
    datetime(
        start.year, start.month, start.day, hour=1, tzinfo=timezone.utc
    ))

I am not opposed to a method to just iterate the dataframe and increment them by 1, or create it properly given the range. Any advice would be appreciated.

CodePudding user response:

Possibly not the most elegant, but this sufficed:

for i in range(0, df.shape[0]):
    for j in range(0, 10):
        df['time'][(i*10) j] = df['time'][(i*10) j].replace(hour=j)

CodePudding user response:

You can use timedelta arithmetic. Or use a date_range. Ex:

import pandas as pd
import numpy as np

df = pd.DataFrame()
num = 10
start = pd.Timestamp("now").floor("d") # current date, h/m/s set zero

# add range as timedelta to start date:
df["Time"] = start   pd.to_timedelta(np.arange(num), unit="H")
# even simpler: date_range
df["Time2"] = pd.date_range(start, periods=num, freq="H")


df
                 Time               Time2
0 2022-10-06 00:00:00 2022-10-06 00:00:00
1 2022-10-06 01:00:00 2022-10-06 01:00:00
2 2022-10-06 02:00:00 2022-10-06 02:00:00
3 2022-10-06 03:00:00 2022-10-06 03:00:00
4 2022-10-06 04:00:00 2022-10-06 04:00:00
5 2022-10-06 05:00:00 2022-10-06 05:00:00
6 2022-10-06 06:00:00 2022-10-06 06:00:00
7 2022-10-06 07:00:00 2022-10-06 07:00:00
8 2022-10-06 08:00:00 2022-10-06 08:00:00
9 2022-10-06 09:00:00 2022-10-06 09:00:00
  • Related