这是我的pandas数据框中的数据。我想将 dateTime 列转换为 datetime64 ,以便检查是否存在重复的 fileName ,然后找到包含最新 dateTime的文件
你可以看到这里的日期时间格式是 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
答案 0 :(得分:3)
我相信您需要将dateTime列从int
类型转换为string
类型,然后才能在其上调用pd.to_datetime
。
如果您收到有关“未转换数据”的ValueError,它通常会告诉您指定的字符串或格式是错误的。尝试将'%Y%M%d%H%m%S'
更改为'%Y%m%d%H%M%S'
。您可以找到格式字符串here的文档(一直滚动到底部)。
答案 1 :(得分:1)
我相信这是您使用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