![](/img/trans.png)
[英]Issue with converting a pandas column from int64 to datetime64
[英]Convert a column of int64 (YYYYMMDDHHMMSS) into datetime64 without delimiters
这是我的熊猫数据框中的数据。 我想将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
我认为您需要在将pd.to_datetime
调用之前将dateTime列从int
类型转换为string
类型。
如果您收到有关“未转换的数据”的ValueError,则通常会告诉您指定的字符串或格式错误。 尝试将'%Y%M%d%H%m%S'
更改为'%Y%m%d%H%M%S'
。 您可以在此处找到有关格式字符串的文档(一直滚动到底部)。
我相信这就是您使用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.