2016-04-08 236 views
1

我在應用pd.to_datetime()方法後包含日期時間對象的熊貓數據框中有一列。 目前爲止這麼好。現在該列以「2016-02-08 09:59:00.510」的形式包含日期。 但是,我想以某種方式'刪除'日期信息,生成輸入形式HH:MM:SS,如下所示:轉換熊貓日期時間對象

2016-02-08 09:59:00.510 - > 09:59: 00

我想知道,如果這是可能的,如果是這樣,我真的很感激一些提示,以正確的方式來做到這一點。

下面是一個小的工作示例。我能夠將日期時間對象轉換爲整數(ns?),但我無法找到如何將'日期'列中的對象轉換爲我想要的格式。

如上所述:任何幫助非常感謝!

import pandas as pd 
import time 

s1 = {'Timestamp' : ['20160208_095900.51','20160208_095901.51','20160208_095902.51','20160208_095903.51', 
        '20160208_095904.51','20160208_095905.51','20160208_095906.51','20160208_095907.51', 
        '20160208_095908.51','20160208_095909.51']} 

    df = pd.DataFrame(s1) 

    df['Date'] = pd.to_datetime(df['Timestamp'], format = '%Y%m%d_%H%M%S.%f') 
    df['ns'] = (df['Date'].astype(np.int64)/int(1e6)) 
    print df 

回答

0

如果你只是想要一個新的字符串表示,則使用dt.strftime

In [7]: 
df['Time'] = df['Date'].dt.strftime('%H:%M:%S') 
df 

Out[7]: 
      Timestamp     Date  Time 
0 20160208_095900.51 2016-02-08 09:59:00.510 09:59:00 
1 20160208_095901.51 2016-02-08 09:59:01.510 09:59:01 
2 20160208_095902.51 2016-02-08 09:59:02.510 09:59:02 
3 20160208_095903.51 2016-02-08 09:59:03.510 09:59:03 
4 20160208_095904.51 2016-02-08 09:59:04.510 09:59:04 
5 20160208_095905.51 2016-02-08 09:59:05.510 09:59:05 
6 20160208_095906.51 2016-02-08 09:59:06.510 09:59:06 
7 20160208_095907.51 2016-02-08 09:59:07.510 09:59:07 
8 20160208_095908.51 2016-02-08 09:59:08.510 09:59:08 
9 20160208_095909.51 2016-02-08 09:59:09.510 09:59:09 

如果你想datetime.time組件,然後使用dt.time

In [8]: 
df['Time'] = df['Date'].dt.time 
df 

Out[8]: 
      Timestamp     Date    Time 
0 20160208_095900.51 2016-02-08 09:59:00.510 09:59:00.510000 
1 20160208_095901.51 2016-02-08 09:59:01.510 09:59:01.510000 
2 20160208_095902.51 2016-02-08 09:59:02.510 09:59:02.510000 
3 20160208_095903.51 2016-02-08 09:59:03.510 09:59:03.510000 
4 20160208_095904.51 2016-02-08 09:59:04.510 09:59:04.510000 
5 20160208_095905.51 2016-02-08 09:59:05.510 09:59:05.510000 
6 20160208_095906.51 2016-02-08 09:59:06.510 09:59:06.510000 
7 20160208_095907.51 2016-02-08 09:59:07.510 09:59:07.510000 
8 20160208_095908.51 2016-02-08 09:59:08.510 09:59:08.510000 
9 20160208_095909.51 2016-02-08 09:59:09.510 09:59:09.510000 
+0

當你喜歡'DF [」 Date']。dt.strftime('%H:%M:%S')'over'df ['Date']。apply(lambda x:x.strftime('%H:%M:%S')) '? – Zero

+1

@JohnGalt如果存在向量化的方法,應該避免使用'也應該'我也認爲'dt.strftime'被添加到'0.17.0',所以你必須使用'apply'來處理舊版本 – EdChum

+0

@EdChum:many謝謝!一個新的字符串是完全足夠的。 – Number42