2017-01-09 37 views
-3

我有一個非常大的數據框,其中一列['date'],datetime(dtype仍然是字符串)的格式如下..有時顯示爲hh:mm :SS,有時爲h:mm:ss的(與9小時或更早)在熊貓數據框中清除不一致的日期格式

Tue Mar 1 9:23:58 2016 
Tue Mar 1 9:29:04 2016 
Tue Mar 1 9:42:22 2016 
Tue Mar 1 09:43:50 2016 

pd.to_datetime()當我試圖將字符串轉換成日期時間格式,所以我希望轉換將無法正常工作在失蹤的時間前找到一些幫助。

任何幫助,非常感謝!

回答

2
import pandas as pd 
date_stngs = ('Tue Mar 1 9:23:58 2016','Tue Mar 1 9:29:04 2016','Tue Mar 1 9:42:22 2016','Tue Mar 1 09:43:50 2016') 
a = pd.Series([pd.to_datetime(date) for date in date_stngs]) 
print a 

輸出

0 2016-03-01 09:23:58 
1 2016-03-01 09:29:04 
2 2016-03-01 09:42:22 
3 2016-03-01 09:43:50 
+0

它沒有出於某種原因,但我還是謝謝你的工作!使用函數運行to_datetime時,仍然出現錯誤。我發現了我在下面發佈的其他解決方案,但它不是很漂亮 –

0
time = df[0].str.split(' ').str.get(3).str.split('').str.get(0).str.strip().str[:8] 
year = df[0].str.split('--').str.get(0).str[-5:].str.strip() 
daynmonth = df[0].str[:10].str.strip() 

df_1['date'] = daynmonth + ' ' +year + ' ' + time 

df_1['date'] = pd.to_datetime(df_1['date']) 

發現這種重新排列順序

0

假設你有串的一列數據框如上和列名是0那麼下面的工作時自己將空格分割字符串,然後取第三個字符串並用零填充zfill

假設開始df

      0 
0 Tue Mar 1 9:23:58 2016 
1 Tue Mar 1 9:29:04 2016 
2 Tue Mar 1 9:42:22 2016 
3 Tue Mar 1 09:43:50 2016 

df1 = df[0].str.split(expand=True) 
df1[3] = df1[3].str.zfill(8) 
pd.to_datetime(df1.apply(lambda x: ' '.join(x.tolist()), axis=1)) 

輸出

0 2016-03-01 09:23:58 
1 2016-03-01 09:29:04 
2 2016-03-01 09:42:22 
3 2016-03-01 09:43:50 
dtype: datetime64[ns]