python - Pandas ,处理 "Out of bounds timestamp..."

标签 python pandas string-to-datetime

我有一个具有某些功能的 df 作为对象类型,我想将其转换为日期类型。当我尝试使用 pd.to_datetime 进行转换时,其中一些功能会返回“超出时间戳范围”错误消​​息。为了解决这个问题,我添加了“errors= coerce”参数,然后尝试删除所有导致的 NA。例如:

pd.to_datetime(df[date_features], infer_datetime_format = True, errors = 'coerce')
df[date_features].dropna(inplace= True)

然而,这似乎并没有将功能转换为“日期时间:”(“maturity_date”是我试图转换为日期时间的日期功能之一)。

df.[maturity_date].describe()

count        3355323
unique         11954
top       2015-12-01
freq           29607
Name: maturity_date, dtype: object

此外,如果我再次尝试使用 pd.to_datetime 转换成熟度日期而不“强制”,我会得到“越界”时间戳。

我希望我已经彻底描述了这个问题。

有什么想法吗?

最佳答案

pd.to_datetime 不是就地操作。您的代码执行转换,然后丢弃结果。正确的做法是将结果分配回来,就像这样 -

df['date_features'] = pd.to_datetime(df.date_features, errors='coerce')

此外,不要对属于数据帧的列调用 dropna,因为这不会修改数据帧(即使使用 inplace=True)。相反,使用 subset 属性在 dataframe 上调用 dropna -

df.dropna(subset='date_features', inplace=True)

现在,正如观察到的,maturity_date 将如下所示 -

results["maturity_date"].head()

0   2017-04-01
1   2017-04-01
2   2017-04-01
3   2016-01-15
4   2016-01-15
Name: maturity_date, dtype: datetime64[ns]

如您所见,dtypedatetime64,这意味着此操作有效。如果您调用describe(),它会执行一些标准聚合并将结果作为新系列返回。该系列的显示方式与其他系列相同,包括适用于它的 dtype 描述,而不是它所描述的列。

关于python - Pandas ,处理 "Out of bounds timestamp...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47871390/

相关文章:

python - LIME 功能解释产生无效 key 错误

python - 如何根据记录中其他 4 个字段的 bool 运算符有效更新数据框中的字段?

python - IronPython 示例

python - 如何在Python中按工作日、月份等对pandas系列时间码进行排序/分组?

python 3.+,根据数据透视表中的平均价格创建一个新的分类列

python - pandas pd.to_datetime() with format argument not giving 12-hour clock with AM/PM

powershell - PowerShell:奇怪的日期格式字符串到日期时间

python - Pandas to_datetime 在非美国日期上的行为不一致

python - 使用 numpy 查找范围元组之间的交集

python - Pandas:计算一个值连续多长时间