I have a data frame with the DateTime index. I want to find the difference between row datetimes and convert it into seconds. My code:
JavaScript
x
12
12
1
import datetime
2
df =
3
index Col_A datetime
4
2019-10-01 08:10:53 400.5334 2019-10-01 08:10:53
5
2019-10-01 08:10:57 401.2720 2019-10-01 08:10:57
6
2019-10-01 08:10:59 401.7874 2019-10-01 08:10:59
7
2019-10-01 08:11:02 402.1579 2019-10-01 08:11:02
8
2019-10-01 08:11:06 402.6045 2019-10-01 08:11:06
9
10
df['timedif'] = df['datetime'].diff()
11
df['timedif1'] = df['timedif'].total_seconds()
12
Present output:
JavaScript
1
10
10
1
print(df['timedif'])
2
2019-10-01 08:10:53 NaT
3
2019-10-01 08:10:57 0 days 00:00:04
4
2019-10-01 08:10:59 0 days 00:00:02
5
2019-10-01 08:11:02 0 days 00:00:03
6
2019-10-01 08:11:06 0 days 00:00:04
7
Name: datetime, Length: 1604993, dtype: timedelta64[ns]
8
9
AttributeError: 'Series' object has no attribute 'total_seconds'
10
How do I convert the timedif
column into total seconds?
Advertisement
Answer
Simply do:
JavaScript
1
2
1
df['timedif1'] = df['timedif'] / np.timedelta64(1, 's')
2
Example:
JavaScript
1
5
1
df = pd.DataFrame({'datetime':[datetime.datetime(2019,10,1,8,10,53), datetime.datetime(2019,10,1,8,10,57),
2
datetime.datetime(2019,10,2,8,10,57)]})
3
df['timedif'] = df['datetime'].diff()
4
df['timedif1'] = df['timedif'] / np.timedelta64(1, 's')
5
JavaScript
1
5
1
datetime timedif timedif1
2
0 2019-10-01 08:10:53 NaT NaN
3
1 2019-10-01 08:10:57 0 days 00:00:04 4.0
4
2 2019-10-02 08:10:57 1 days 00:00:00 86400.0
5