2017-07-11 68 views
1

這是我的熊貓數據框中的數據。我想在日期時間列轉換成datetime64,所以我可以檢查是否重複文件名存在,那麼找到最新的日期時間將int64(YYYYMMDDHHMMSS)的列轉換爲不帶分隔符的datetime64

的文件,你可以在這裏看到的日期時間格式爲YYYYMMDDHHMMSS無定界符

     filePath  dateTime fileName 
0 Line20170601142525_line1.dat 20170601142525 line1 
1 Line20170601142525_line2.dat 20170601142525 line2 
2 Line20170601142526_line2.dat 20170601142526 line2 
3 Line20170601142526_line3.dat 20170601142526 line3 

Process finished with exit code 0 

這是我的代碼

formattedFileDirectory['dateTime'] = pandas.to_datetime(formattedFileDirectory['dateTime'], format='%Y%M%d%H%m%S') 

我得到這個錯誤

TypeError: 'int' object is unsliceable 

,如果我設置列字符串我得到這個錯誤

ValueError: unconverted data remains: 5 

回答

2

我認爲,你需要在你面前DateTime列從int類型轉換爲string型請撥打pd.to_datetime

如果您得到一個關於「未轉換的數據」的ValueError,它通常會告訴您,您指定的字符串或格式不正確。嘗試將'%Y%M%d%H%m%S'更改爲'%Y%m%d%H%M%S'。您可以在格式字符串here(滾動到底部)找到文檔。

0

我相信這是你要找的內容使用pandas.DataFrame.apply

df['dateTime'] = df['dateTime'].apply(lambda x: pd.to_datetime(str(x), format='%Y%m%d%H%M%S')) 

如果你不喜歡使用apply,因爲它的速度慢(因爲真的是一個循環),你仍然可以使用這個:

df['dateTime'] = pd.to_datetime(df['dateTime'].astype(str),format='%Y%m%d%H%M%S') 

輸出:

     filePath   dateTime fileName 
0 Line20170601142525_line1.dat 2017-06-01 14:25:25 line1 
1 Line20170601142525_line2.dat 2017-06-01 14:25:25 line2 
2 Line20170601142526_line2.dat 2017-06-01 14:25:26 line2 
3 Line20170601142526_line3.dat 2017-06-01 14:25:26 line3 
+1

我不會建議使用'。適用()'上pd.to_datetime,作爲函數本身具備處理一列數據的功能。 'apply'方法實際上是一個for循環。 – CaptainMeow

+0

你是對的,我更新了@CaptainMeow,+1的想法 –

相關問題