Pandas,处理 "Out of bounds timestamp..."
Pandas, Handling "Out of bounds timestamp..."
我有一个具有某些特征的 df 作为对象类型,我想将其转换为日期类型。当我尝试使用 pd.to_datetime 进行转换时,其中一些功能 return 出现 "Out of bounds timestamp" 错误消息。为了解决这个问题,我添加了 "errors= coerce" 参数,然后尝试删除所有结果的 NA。例如:
pd.to_datetime(df[date_features], infer_datetime_format = True, errors = 'coerce')
df[date_features].dropna(inplace= True)
然而,这似乎没有将特征转换为 'datetime:'("maturity_date" 是我试图转换为日期时间的 date_features 之一)。
df.[maturity_date].describe()
count 3355323
unique 11954
top 2015-12-01
freq 29607
Name: maturity_date, dtype: object
此外,如果我再次尝试使用不带 "coerce" 的 pd.to_datetime 转换 maturity_date,我会得到 "Out of bounds" 时间戳。
我希望我已经彻底描述了这个问题。
有什么想法吗?
pd.to_datetime
不是就地操作。您的代码执行转换,然后继续丢弃结果。正确的做法是将结果分配回去,就像这样 -
df['date_features'] = pd.to_datetime(df.date_features, errors='coerce')
此外,不要在属于数据框的列上调用 dropna
,因为这不会修改数据框(即使使用 inplace=True
)。相反,使用 subset
属性在 数据帧 上调用 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]
如您所见,dtype
是 datetime64
,这意味着此操作有效。如果您调用 describe()
,它会执行一些标准聚合,并且 returns 结果作为 新系列 。该系列的显示方式与其他任何系列相同,包括适用于 它 的 dtype
描述,而不是它所描述的列。
我有一个具有某些特征的 df 作为对象类型,我想将其转换为日期类型。当我尝试使用 pd.to_datetime 进行转换时,其中一些功能 return 出现 "Out of bounds timestamp" 错误消息。为了解决这个问题,我添加了 "errors= coerce" 参数,然后尝试删除所有结果的 NA。例如:
pd.to_datetime(df[date_features], infer_datetime_format = True, errors = 'coerce')
df[date_features].dropna(inplace= True)
然而,这似乎没有将特征转换为 'datetime:'("maturity_date" 是我试图转换为日期时间的 date_features 之一)。
df.[maturity_date].describe()
count 3355323
unique 11954
top 2015-12-01
freq 29607
Name: maturity_date, dtype: object
此外,如果我再次尝试使用不带 "coerce" 的 pd.to_datetime 转换 maturity_date,我会得到 "Out of bounds" 时间戳。
我希望我已经彻底描述了这个问题。
有什么想法吗?
pd.to_datetime
不是就地操作。您的代码执行转换,然后继续丢弃结果。正确的做法是将结果分配回去,就像这样 -
df['date_features'] = pd.to_datetime(df.date_features, errors='coerce')
此外,不要在属于数据框的列上调用 dropna
,因为这不会修改数据框(即使使用 inplace=True
)。相反,使用 subset
属性在 数据帧 上调用 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]
如您所见,dtype
是 datetime64
,这意味着此操作有效。如果您调用 describe()
,它会执行一些标准聚合,并且 returns 结果作为 新系列 。该系列的显示方式与其他任何系列相同,包括适用于 它 的 dtype
描述,而不是它所描述的列。