2014-11-14 121 views
3

我已導入CSV文件,該文件具有混合數據格式 - 一些由read_csv識別的日期格式,以及一些Excel串行日期時間格式(例如41,866.321)。處理具有混合日期格式的Pandas數據框列

數據導入後,列類型顯示爲對象(給定不同類型的數據)和日期(這兩種格式)都有dtype字符串。

我想使用to_datetime方法將已識別的字符串日期格式轉換爲dataframe列中的日期時間,將不能識別的字符串保留爲excel格式,然後我可以隔離並更正脫機行。但是,除非我逐行應用方法(方式太慢),否則無法執行此操作。

有沒有人有一個更聰明的方式來解決這個問題?

更新:已經找到了更多的解決方案,使用coerce = True強制列數據類型轉換,然後標識可以交叉引用回原始文件的空值。但是,如果有更好的方法來做到這一點(例如修復無法識別的時間戳),請讓我知道。

df1['DateTime']=pd.to_datetime(df1['Time_Date'],coerce=True) 
nulls=df1['Time_Date'][df1['Time_Date'].notnull()==False] 
+0

您的解決方案聽起來很合理。儘管您可能希望將解決方案放在答案框中,然後將其作爲正確答案接受。這樣它就會顯示爲在未來搜索的人的答案。 –

+0

謝謝JD已經這麼做了 –

回答

2

已經修修補補周圍更多一些我發現這個解決方案,使用強制=真來強制列數據類型轉換,然後確定,我可以交叉參考回原來的文件空值。但是,如果有更好的方法來做到這一點(例如修復無法識別的時間戳),請讓我知道。

df1['DateTime']=pd.to_datetime(df1['Time_Date'],coerce=True) 
nulls=df1['Time_Date'][df1['Time_Date'].notnull()==False]