2017-08-25 60 views
-1

我有一個數據框'df',其中一個屬性是日期時間。此屬性中的值如下所示:在python中處理timestamp屬性?

>>df['TR_DATE'] 
0   2015-03-18 19:59:58 
1   2015-03-19 13:23:37 
2   2015-03-19 13:27:04 
3   2015-03-19 14:23:53 
4   2015-03-19 15:01:50 
5   2015-03-19 17:45:42 
6   2015-03-19 17:49:58 

我想將此屬性中的值分別作爲日期和時間拆分。所以,我將有兩個新的列DF [「日期」]和df [「TIME」],它包含的值:

>>df['DATE'] 
     2015-03-18 
     2015-03-19 
     2015-03-19 
     2015-03-19 
     2015-03-19 
     2015-03-19 
     2015-03-19 
>>df['Time'] 
     19:59:58 
     13:23:37 
     13:27:04 
     14:23:53 
     15:01:50 
     17:45:42 
     17:49:58 

我怎麼能做到這一點?

+0

可能重複: https://stackoverflow.com/questions/22625698/python-split-timestamp-by-date-and-hour – kenfire

+0

可能重複:https://stackoverflow.com/q/17194657/1278112 –

+0

可能重複的[如何從日期時間獲取日期](https://stackoverflow.com/questions/17194657/how-to-get-the-date-from-datetime) –

回答

5

下面應該工作:

In[229]: 
df['DATE'] = df['TR_DATE'].dt.date 
df['TIME'] = df['TR_DATE'].dt.time 
df 

Out[229]: 
       TR_DATE  DATE  TIME 
0 2015-03-18 19:59:58 2015-03-18 19:59:58 
1 2015-03-19 13:23:37 2015-03-19 13:23:37 
2 2015-03-19 13:27:04 2015-03-19 13:27:04 
3 2015-03-19 14:23:53 2015-03-19 14:23:53 
4 2015-03-19 15:01:50 2015-03-19 15:01:50 
5 2015-03-19 17:45:42 2015-03-19 17:45:42 
6 2015-03-19 17:49:58 2015-03-19 17:49:58 

datetime列有.dt訪問返回dt.datedt.time組件。

注意這會返回datetime.datedatetime.time不支持向量化操作的對象。

這假設D型已經是日期時間,如果沒有,那麼你需要使用to_datetime轉換:

上面的電話之前
df['TR_DATE'] = pd.to_datetime(df['TR_DATE'] 

如果你只是想str表示,你可以調用dt.strftime

In[231]: 
df['DATE'] = df['TR_DATE'].dt.strftime('%Y-%m-%d') 
df['TIME'] = df['TR_DATE'].dt.strftime('%H:%M:%S') 
df 

Out[231]: 
       TR_DATE  DATE  TIME 
0 2015-03-18 19:59:58 2015-03-18 19:59:58 
1 2015-03-19 13:23:37 2015-03-19 13:23:37 
2 2015-03-19 13:27:04 2015-03-19 13:27:04 
3 2015-03-19 14:23:53 2015-03-19 14:23:53 
4 2015-03-19 15:01:50 2015-03-19 15:01:50 
5 2015-03-19 17:45:42 2015-03-19 17:45:42 
6 2015-03-19 17:49:58 2015-03-19 17:49:58 

同樣因爲這些都是字符串無法執行算術運算