2017-08-24 154 views
1

場景:我有一個數據框,其中包含從excel工作表中檢索到的多個列。其中一些列吃了日期:一些只有日期(yyyy:mm:dd),另一些有日期和時間戳(yyyy:mm:dd 00.00.000000)。從pandas數據框中的日期時間刪除時間戳

問題:如何從日期中刪除時間戳,這些日期不是我數據框的索引?

我已經嘗試過:從這裏其他職位的SO(working with dates in pandas - remove unseen characters in datetime and convert to stringHow to strip a pandas datetime of date, hours and seconds)我發現:

pd.DatetimeIndex(dfST['timestamp']).date 

strfitme (df['timestamp'].apply(lambda x: x.strftime('%Y-%m-%d')) 

但我似乎無法找到一種方法當它不是我的數據框的索引時,直接使用它們到想要的列。

+2

如果您已經轉換爲DATETIME你不會需要創建一個'DatetimeIndex'。您可以使用dt訪問器重新分配列:'dfST ['timestamp'] = dfST ['timestamp']。dt.date' –

+0

相應列的dtype是什麼?你是什​​麼意思'但我似乎無法找到一種方式來使用這些直接到想要的列,當它不是我的數據框的索引。' –

+0

@AndrewL剛剛嘗試過,我得到:「AttributeError:Can只使用.dt訪問器與datetimelike值「 – DGMS89

回答

1

你可以做到以下幾點:

dfST['timestamp'] = pd.to_datetime(dfST['timestamp']) 

to_datetime()會推斷日期列的格式。如果該列包含非日期值,則還可以傳遞errors='coerce'

完成上述後,您就可以創建只包含日期值的新列:

dfST['new_date_column'] = dfST['timestamp'].dt.date 
+1

Coerce做了詭計,非常感謝。 – DGMS89