John_gis
John_gis

Reputation: 127

How to reset a date time column to be in increments of one minute in python

I have a dataframe that has a date time column called start time and it is set to a default of 12:00:00 AM. I would like to reset this column so that the first row is 00:01:00 and the second row is 00:02:00, that is one minute interval.

This is the original table.

ID     State Time   End Time
A001    12:00:00    12:00:00
A002    12:00:00    12:00:00
A003    12:00:00    12:00:00
A004    12:00:00    12:00:00
A005    12:00:00    12:00:00
A006    12:00:00    12:00:00
A007    12:00:00    12:00:00

I want to reset the start time column so that my output is this:

ID    State Time    End Time
A001    0:00:00    12:00:00
A002    0:00:01    12:00:00
A003    0:00:02    12:00:00
A004    0:00:03    12:00:00
A005    0:00:04    12:00:00
A006    0:00:05    12:00:00
A007    0:00:06    12:00:00

How do I go about this?

Upvotes: 0

Views: 200

Answers (2)

Erfan
Erfan

Reputation: 42886

First we convert your State Time column to datetime type. Then we use pd.date_range and use the first time as starting point with a frequency of 1 minute.

df['State Time'] = pd.to_datetime(df['State Time'])
df['State Time'] = pd.date_range(start=df['State Time'].min(), 
                                 periods=len(df), 
                                 freq='min').time

Output

     ID State Time  End Time
0  A001   12:00:00  12:00:00
1  A002   12:01:00  12:00:00
2  A003   12:02:00  12:00:00
3  A004   12:03:00  12:00:00
4  A005   12:04:00  12:00:00
5  A006   12:05:00  12:00:00
6  A007   12:06:00  12:00:00

Upvotes: 1

FObersteiner
FObersteiner

Reputation: 25544

you could use pd.date_range:

df['Start Time'] = pd.date_range('00:00', periods=df['Start Time'].shape[0], freq='1min')

gives you

df
Out[23]: 
           Start Time
0 2019-09-30 00:00:00
1 2019-09-30 00:01:00
2 2019-09-30 00:02:00
3 2019-09-30 00:03:00
4 2019-09-30 00:04:00
5 2019-09-30 00:05:00
6 2019-09-30 00:06:00
7 2019-09-30 00:07:00
8 2019-09-30 00:08:00
9 2019-09-30 00:09:00

supply a full date/time string to get another starting date.

Upvotes: 1

Related Questions