2017-07-11 67 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的想法 –

相关问题