我使用 pandas 得到了非常意想不到的行为pd.to_datetime
. My pd.Series
如下:
0 2017-01-06 14:37:16
1 2017-01-27 00:00:00
2 2017-01-18 00:00:00
3 2017-01-26 00:00:00
4 None
...
454823 2019-10-22 11:20:03
454824 None
454825 2019-07-11 00:00:00
454826 None
454827 2019-07-15 00:00:00
Name: colx, Length: 454828, dtype: object
当投射到datetime
我越来越:
pd.to_datetime(df.colx, errors='coerce')
InvalidIndexError:重新索引仅对具有唯一值的索引对象有效
虽然这似乎表明索引中存在重复值,但我运行了以下测试来检查这是否是原因:
all(df.colx.index == range(df.colx.shape[0]))
# True
df.index.duplicated().any()
# False
所以显然没有任何重复的索引。什么可能导致此错误?
您收到的错误与您的无关Index
。这与this https://github.com/pandas-dev/pandas/pull/26078应该已经解决的问题0.25.0
。该问题与以下多个不一致的处理有关null
使用时的类型pd.to_datetime
import pandas as pd
pd.core.algorithms.unique([pd.NaT, None])
#array([NaT, None], dtype=object) # That is, `pd.NaT` and `None` are unique
pd.Index([pd.NaT, None]).is_unique
#False # However, Index.unique considers them duplicated
这种不同行为的处理应该已经修复0.25.0
。如果它仍然给您带来问题,解决方案是确保您有一个single的代表null
您需要转换的列中的值。在这种情况下,您可以.fillna
与日期时间空值。
pd.to_datetime(df.colx.fillna(pd.NaT), errors='coerce')
pd.__version__
#'0.25.0'
pd.to_datetime([pd.NaT, None])
#DatetimeIndex(['NaT', 'NaT'], dtype='datetime64[ns]', freq=None)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)