My sample dataframe is:
JavaScript
x
3
1
df = pd.DataFrame({'time':['00:00:00','03:00:00','06:00:00','09:00:00','12:00:00'],
2
'value':[850,np.nan,500,650,780]})
3
Here, the time are in UTC, I want to convert the time to local time such that:
Local time = UTC + 5:15
Any help would be highly appreciated.
Advertisement
Answer
Perhaps datetime.timedelta
?
JavaScript
1
41
41
1
>>> import pandas as pd
2
>>> import numpy as np
3
>>> from datetime import timedelta
4
>>> df = pd.DataFrame({'time':['00:00:00','03:00:00','06:00:00','09:00:00','12:00:00'],
5
'value':[850,np.nan,500,650,780]})
6
>>> df
7
time value
8
0 00:00:00 850.0
9
1 03:00:00 NaN
10
2 06:00:00 500.0
11
3 09:00:00 650.0
12
4 12:00:00 780.0
13
>>> df['time'] = df['time'].astype('datetime64')
14
>>> df
15
time value
16
0 2021-06-14 00:00:00 850.0
17
1 2021-06-14 03:00:00 NaN
18
2 2021-06-14 06:00:00 500.0
19
3 2021-06-14 09:00:00 650.0
20
4 2021-06-14 12:00:00 780.0
21
>>> d = timedelta(hours=5, minutes=15)
22
>>> print(d)
23
5:15:00
24
>>> df['time'] = df['time'].apply(lambda v: v+d)
25
>>> df
26
time value
27
0 2021-06-14 05:15:00 850.0
28
1 2021-06-14 08:15:00 NaN
29
2 2021-06-14 11:15:00 500.0
30
3 2021-06-14 14:15:00 650.0
31
4 2021-06-14 17:15:00 780.0
32
>>> df['time'] = df['time'].apply(lambda v: v.strftime('%H:%M:%S'))
33
>>> df
34
time value
35
0 05:15:00 850.0
36
1 08:15:00 NaN
37
2 11:15:00 500.0
38
3 14:15:00 650.0
39
4 17:15:00 780.0
40
>>>
41