如何在熊猫中使用“ OutofBoundsDatetime”?

时间:2019-05-31 19:00:31

标签: python pandas datetime

我正在从由第三方自动生成的csv文件创建的pandas数据框中提取数据。

我要尝试做的一件事是确保我正在查看的所有记录仍处于“活动”状态。有一个包含到期日期的日期列,我只想能够将此日期列与今天的日期进行比较,如下所示:

import pandas as pd
import numpy as np
import datetime

today = datetime.datetime.now()
yesterday = datetime.datetime.now() - datetime.timedelta(days=1)

df = pd.DataFrame({"amount": pd.Series([100, 200, 300]), "date": pd.Series([datetime.strptime("2019-09-27", "%Y-%m-%d"), datetime.strptime("2138-04-11", "%Y-%m-%d"), datetime.strptime("9999-12-31", "%Y-%m-%d")])}

df["date"] = np.where(df["date"] > today, df["date"], pd.Series(yesterday for _ in range(len(df.index))))

date.replace({yesterday: np.nan})

我正在做的是基本上将所有过期日期替换为昨天的日期,并保留所有活动日期。然后,我将昨天日期的所有实例替换为np.nan

考虑this

时遇到问题
  

由于熊猫以纳秒分辨率表示时间戳,因此   可以使用64位整数表示的时间跨度为   限于大约584年

我上面的代码将产生此错误OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 9999-12-31 00:00:00

我希望能够处理此文件,并专门处理不正确的日期,例如9999/01/20。我的最终目标是像这样将日期值设置为df的{​​{1}}中的所有记录删除:

np.nan

对于解决此问题的任何想法,我将不胜感激。

0 个答案:

没有答案