2017-08-14 107 views
3

由於DF怎樣才能結合datetime.date和大熊貓數據幀datetime.time列?

  Date  Time Data  
3 2017-08-10 15:15:00 a  
0 2017-08-11 15:15:00 b  
1 2017-08-12 15:15:00 c  
2 2017-08-13 15:15:00 d  
1 2017-08-14 15:15:00 e  

而且

print (type(df['Date'].iat[0])) 
<class 'datetime.date'> 

print (type(df['Time'].iat[0])) 
<class 'datetime.time'> 

我怎麼能結合df.Date和df.Time成DateTime列是一個DateTime對象??:

 Date  Time Data DateTime 
3 2017-08-10 15:15:00 a  2017-08-10 15:15:00 
0 2017-08-11 15:15:00 b  2017-08-11 15:15:00 
1 2017-08-12 15:15:00 c  2017-08-12 15:15:00 
2 2017-08-13 15:15:00 d  2017-08-13 15:15:00 
1 2017-08-14 15:15:00 e  2017-08-14 15:15:00 

什麼我想:

df['DateTime'] = df.apply(lambda r : pd.datetime.combine(r['Date'],r['Time']),1) 

這工作以及預期的,但是,我寧願一個量化操作,我得到了以下信息:

C:\Users\User\Anaconda3\lib\site-packages\ipykernel\__main__.py:1: 
SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame. 
Try using .loc[row_indexer,col_indexer] = value instead 

See the caveats in the documentation: http://pandas.pydata.org/pandas- 
docs/stable/indexing.html#indexing-view-versus-copy 
if __name__ == '__main__': 

回答

1

這裏的問題是,這兩個日期和時間已經在日期時間格式。嘗試

df['datetime'] = pd.to_datetime(df['Date'].dt.strftime('%Y-%m-%d') + df['Time'].astype(str), format = '%Y-%m-%d%H:%M:%S') 

雖然我不知道這是否會比使用datetime.combine

+0

我以前試過這種更有效的,但我得到:「類型錯誤:不支持的操作數類型(S)爲+:「日期時間.date」和‘海峽’」 – hernanavella

+0

我測試和它的工作,什麼版本是你嗎?你也可以嘗試另一種方法,我添加 – Vaishali

+0

替代形式給了我這樣的:類型錯誤:不支持的操作數類型(S)爲+:「datetime.date」和「datetime.time」 – hernanavella