2015-11-12 90 views
0

我有數據的行(熊貓),有一天的時間:轉換時間列於UTC時間,沒有日期

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 

但沒有添加日期。然後,我試圖將我的熊貓列合併到一個列中以便能夠遍歷。我試圖在pd.merge中添加它們astype(str),但沒有成功。

有關如何在pandas中使用to_datetime函數並將其保持爲UTC時間的任何想法?

回答

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