因此我的timestamp列同时包含了时间和毫秒(ms)时间。首先将pd.to_datetime(unit='s', errors='ignore')
设置为head,将其设置为尾部tail,就像我想的那样。它忽略了“ ms”类型的时间戳。
但是当我运行df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms', errors='ignore')
时,我的head变成了NaT,但是我的tail正确地转换了。为什么函数不忽略已经转换的时间戳?
这是为什么?是否可以使用内置方法转换两种单位类型?我当前的解决方案遍历每一行,以检查时间戳记的长度是否大于10(如果将其缩减为10)。之后,我使用to_datetime。
对于当前的解决方案,我的数据集很大,因为要花很长时间。
编辑
时间戳列看起来像这样
1541760294
1541746328
1541723516
1543826478000
1543804455000
1541741097
答案 0 :(得分:0)
这是一个快速的技巧,但是您可以使用类型检查给出的索引来转换您在第一遍中未获得的索引:
idx = [df['timestamp'].apply(lambda x: type(x)!=datetime.datetime)]
df['timestamp'][idx] = pd.to_datetime(df['timestamp'], unit='ms', errors='ignore')
我不完全确定数据类型是什么,但我猜它应该是datetime.datetime ...