Pandas dataframe datetime to time then to seconds
Solution 1
Since you are converting it to datetime series, simply use basic maths to get the seconds i.e
df_time = pd.to_datetime(df["Timestamp"])
(df_time.dt.hour*60+df_time.dt.minute)*60 + df_time.dt.second
0 47340
1 47460
2 47580
3 47700
Name: Timestamp, dtype: int64
Solution 2
I think you need timedelta
s by to_timedelta
with times
created by split
and selecting second list
s by str[1]
, then total_seconds
and last cast to int
:
df_time = pd.to_timedelta(df["Timestamp"].str.split().str[1]).dt.total_seconds().astype(int)
print (df_time)
0 47340
1 47460
2 47580
3 47700
Name: Timestamp, dtype: int32
Detail:
print (df["Timestamp"].str.split().str[1])
0 13:09:00
1 13:11:00
2 13:13:00
3 13:15:00
Name: Timestamp, dtype: object
print (pd.to_timedelta(df["Timestamp"].str.split().str[1]))
0 13:09:00
1 13:11:00
2 13:13:00
3 13:15:00
Name: Timestamp, dtype: timedelta64[ns]
Or if need seconds form datetime
s use dt.second
:
df_time = pd.to_datetime(df["Timestamp"]).dt.second
print (df_time)
0 0
1 0
2 0
3 0
Name: Timestamp, dtype: int64
Solution 3
if you are substracting for duration then use below to convert in seconds (tsession['EndTime'] -tsession['StartTime'])/ np.timedelta64(1, 's')
koger23
Updated on June 15, 2022Comments
-
koger23 almost 2 years
I have a dataframe. A column contains timestamps. I would like to remove dates and convert the time to seconds.
First I converted them to datetime:
In: df_time = pd.to_datetime(df["Timestamp"]) Out: 0 2017-11-07 13:09:00 1 2017-11-07 13:11:00 2 2017-11-07 13:13:00 3 2017-11-07 13:15:00 dtype: datetime64[ns]
Then I removed dates:
In: df_time = pd.Series([val.time() for val in df_time]) Out: 0 13:09:00 1 13:11:00 2 13:13:00 3 13:15:00 4 13:17:00 dtype: object
But they became objects and I did not managed to convert them to datetime-like objects to convert them into seconds. I know there are some similar threads I went trhough them.
I thank your help in advance.