0

i have a Dataframe which has datetime stamps.

date time
2017-06-25 00:31:53
2017-06-25 00:32:36
2017-06-25 00:33:11
2017-06-25 00:33:59
2017-06-25 00:34:31
2017-06-25 00:35:17

I want to round off the seconds to nearest zeros if the eg.

date time
2017-06-25 00:31:50
2017-06-25 00:32:40
2017-06-25 00:33:10
2017-06-25 00:34:00
2017-06-25 00:34:30
2017-06-25 00:35:20

is there a way to do this in python ?

Sri Charan
  • 83
  • 7

1 Answers1

1

Use Series.dt.round with 10S parameter:

df['datetime'] = pd.to_datetime(df['datetime'])
df['datetime'] = df['datetime'].dt.round('10S')
print (df)
             datetime
0 2017-06-25 00:31:50
1 2017-06-25 00:32:40
2 2017-06-25 00:33:10
3 2017-06-25 00:34:00
4 2017-06-25 00:34:30
5 2017-06-25 00:35:20

If 2 columns:

df['datetime'] = pd.to_datetime(df['date'] + ' ' + df['time'])
df['datetime'] = df['datetime'].dt.round('10S')

df['date'] = df['datetime'].dt.date
df['time'] = df['datetime'].dt.time
print (df)
         date      time            datetime
0  2017-06-25  00:31:50 2017-06-25 00:31:50
1  2017-06-25  00:32:40 2017-06-25 00:32:40
2  2017-06-25  00:33:10 2017-06-25 00:33:10
3  2017-06-25  00:34:00 2017-06-25 00:34:00
4  2017-06-25  00:34:30 2017-06-25 00:34:30
5  2017-06-25  00:35:20 2017-06-25 00:35:20

d = pd.to_datetime(df['date'] + ' ' + df['time']).dt.round('10S')

df['date'] = d.dt.date
df['time'] = d.dt.time
print (df)
         date      time
0  2017-06-25  00:31:50
1  2017-06-25  00:32:40
2  2017-06-25  00:33:10
3  2017-06-25  00:34:00
4  2017-06-25  00:34:30
5  2017-06-25  00:35:20
jezrael
  • 822,522
  • 95
  • 1,334
  • 1,252