2017-03-22 117 views
2

使用Python 3.6和Pandas 0.19.2:如何讀取excel文件並將日期時間從read_excel直接更改爲datetime?類似於This Question about converters and dtypes。但我想在某一列datetimePandas Read_Excel日期時間轉換器

讀書,我想改變這一點:

import pandas as pd 
import datetime 
import numpy as np 

file = 'PATH_HERE' 

df1 = pd.read_excel(file) 

df1['COLUMN'] = pd.to_datetime(df1['COLUMN']) # <--- Line to get rid of 

成類似: df1 = pd.read_excel(file, dtypes= {'COLUMN': datetime})

代碼不會出錯,但在我的例子中,COLUMN仍然是呼叫print(df1['COLUMN'].dtype)

int64 dtype我已經嘗試使用np.datetime64而不是datetime。我也嘗試使用converters=而不是dtypes=,但無濟於事。這可能是挑剔的,但在我的代碼中實現是一個很好的功能。

+3

呢'DF1 = pd.read_excel(文件,轉換器= {「列」:PD。 to_datetime})工作? – EdChum

+0

@EdChum,它確實......這是我嘗試的第一件事,但我想我一定是犯了一個錯字,那就是讓我頭暈目眩!謝謝。作爲旁註的 – MattR

回答

4

通常讀取excel表格將使用excel表格中定義的dtypes,但不能指定例如read_csv中的dtypes。你可以提供一個converters ARG,而您可以通過列和FUNC的字典打電話給列轉換:

df1 = pd.read_excel(file, converters= {'COLUMN': pd.to_datetime}) 
+0

:Excel *是否真的*存儲數據類型?我記得它曾經只是一種顯示格式。 – MattR

+0

那麼他們正在通過excel模塊進行嗅探,你應該能夠在excel中定義一個字符串或數字的列時測試它,然後將它加載到pandas中 – EdChum

+0

我之所以問這個問題,是因爲當我使用'df1.to_excel 'Excel在寫入之後將所有列讀取爲'Custom',並拋出其他進程。我想知道如果以這種格式讀取會解決它,但它不會。 – MattR