晚上好
我需要显示哪些日期介于今天和过去的给定日期之间。这是代码。
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
答案 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])