将时间列转换为UTC时间,没有日期

时间:2015-11-12 02:27:28

标签: python datetime

我有一行数据(在熊猫中),它有一天的时间:

0        8:00 AM
1       11:00 AM
2        8:00 AM
3        4:00 PM
4        9:00 AM
5               
6        9:00 AM
7               
8        9:00 AM
9               
10       9:00 AM
11              
12       9:00 AM
13              
14       8:00 AM
15      11:00 AM
16       8:00 AM
17      11:00 AM
18       9:00 AM
19              
20       9:00 AM
21              
22       9:00 AM
23              
24       9:00 AM
25              
26       9:00 AM
27              
28       9:00 AM

我想将此转换为类似的内容:

0      2015-11-11 08:00:00
1      2015-11-11 11:00:00
2      2015-11-11 08:00:00
3      2015-11-11 16:00:00
4      2015-11-11 09:00:00
5                      NaT
6      2015-11-11 09:00:00
7                      NaT
8      2015-11-11 09:00:00
9                      NaT
10     2015-11-11 09:00:00
11                     NaT
12     2015-11-11 09:00:00
13                     NaT
14     2015-11-11 08:00:00
15     2015-11-11 11:00:00
16     2015-11-11 08:00:00
17     2015-11-11 11:00:00
18     2015-11-11 09:00:00
19                     NaT
20     2015-11-11 09:00:00
21                     NaT
22     2015-11-11 09:00:00
23                     NaT
24     2015-11-11 09:00:00
25                     NaT
26     2015-11-11 09:00:00
27                     NaT
28     2015-11-11 09:00:00
29                     NaT

但没有添加日期。然后我尝试将我的pandas列合并到一个列中以便能够迭代。我尝试在pd.merge中添加astype(str)并没有成功。

关于如何在pandas中使用to_datetime函数并将其保持为UTC时间的任何想法?

1 个答案:

答案 0 :(得分:1)

考虑以下输入数据:

data = ['8:00 AM',
       '11:00 AM',
       '8:00 AM',
       '4:00 PM',
       '9:00 AM',
       '',       
       '9:00 AM',
       '',              
       '9:00 AM']

代码:

import pandas as pd
x = pd.to_datetime(data).time

pd.Series(x)

输出:

0    08:00:00
1    11:00:00
2    08:00:00
3    16:00:00
4    09:00:00
5         NaN
6    09:00:00
7         NaN
8    09:00:00
dtype: object

如果您在其他系列中有其他数据,则希望加入相同的数据框:

x = pd.Series(x)    
y = pd.Series(range(9))
pd.concat([x, y], axis=1)

    0           1
 0  08:00:00    0
 1  11:00:00    1
 2  08:00:00    2

最后,如果您希望合并为字符串的列,请尝试:

z = pd.concat([x, y], axis=1)
z[0].astype(str) + ' foo ' + z[1].astype(str)

0    08:00:00 foo 0
1    11:00:00 foo 1
2    08:00:00 foo 2
3    16:00:00 foo 3
4    09:00:00 foo 4
5         nan foo 5
6    09:00:00 foo 6
7         nan foo 7
8    09:00:00 foo 8
dtype: object