繁体   English   中英

将一列int64(YYYYMMDDHHMMSS)转换为没有分隔符的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM