熊猫to_datetime不忽略已经转换的日期

时间:2019-01-17 14:54:46

标签: python pandas

因此我的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

1 个答案:

答案 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 ...

相关问题