将日期与datetime64 [ns]比较-熊猫

时间:2020-03-28 18:48:12

标签: python-3.x pandas

晚上好

我需要显示哪些日期介于今天和过去的给定日期之间。这是代码。

import pandas as pd
from datetime import datetime,timedelta


df = pd.DataFrame({'DateOFBirth': ['28/03/2020','2/03/2020','12/02/2021']})
df['DateOFBirth'] = pd.to_datetime(df['DateOFBirth'],format='%d/%m/%Y')

print(df.dtypes)
print(df)

x = input ("No of days: ")
today = datetime.date(datetime.now())
result = today - timedelta(days=int(x))

#np.datetime(result).astype(datetime64)
print(result < df['DateOFBirth'] < today)

我试图将date转换为datetime64 [ns],反之亦然,但是我没有运气。使最后的print()语句起作用的任何解决方案?谢谢!

样本输出: 如果今天是2020年3月28日,并且x设置为30天,则输出应为:

28/03/2020
2/03/2020

2 个答案:

答案 0 :(得分:1)

您也可以使用between

nix search --help

或者您也可以使用Query

import pandas as pd
from datetime import datetime,timedelta


df = pd.DataFrame({'DateOFBirth': ['28/03/2020','2/03/2020','12/02/2021']})
df['DateOFBirth'] = pd.to_datetime(df['DateOFBirth'],format='%d/%m/%Y')

x = input ("No of days: ")
today = pd.to_datetime(datetime.now())
result = today - timedelta(days=int(x))
bw_values = df[df['DateOFBirth'].between(result, today, inclusive=False)]

# output if x = 30
print(bw_values)
  DateOFBirth
0  2020-03-28
1  2020-03-02

答案 1 :(得分:0)

您也可以使用Likes计算today,以具有相同的日期格式:

pd.to_datetime()

由于正在将整个列与一个数字进行比较,因此可能会发生另一个错误:

today = pd.to_datetime(datetime.now())

您可以使用此行来计算所需的输出:

print(result < df['DateOFBirth'] < today)

结果将是:

mask = (df['DateOFBirth'] > result) & (df['DateOFBirth'] <= today)
print(df.loc[mask])