我正在尝试从pandas数据帧中检索特定的行,其中列的日期正好比当前时间多7天。例如,当前日期为2022-03-22。这是我的数据帧:
name date
0 Max 2022-03-24
1 Joe 2022-03-29
2 Moe 2022-04-03
现在我只想找回乔,因为他正好7天后就有了约会日期。我见过一些使用between的解决方案,但如果在7天内检查所有内容,这也会检索到Max。
此外,日期没有时间,只有年、月和日。原因是当日期是7天前时,我只想通知此人一次。
我是熊猫的新手,所以欢迎任何形式的帮助。
这可能有点冗长,但我认为它可以满足您的需要。
from datetime import datetime, timedelta
import pandas as pd
df = pd.DataFrame({'Id':['Max','Joe','Moe'],
'Source':['2022-03-24','2022-03-30','2022-04-06']
})
df.Source = pd.to_datetime(df.Source)
df = df.set_index('Source')
def in7days(df):
now = datetime.now()
dt = now + timedelta(7)
idx = df.index.get_loc(dt, method='nearest')
td = (dt - df.index[idx]).days
if td != 0:
return("No entries found.")
else:
return(df.iloc[idx])
然后,如果你调用7days(df(,你会得到以下输出:
Id Moe
Name: 2022-04-06 00:00:00, dtype: object
附言:为了得到一个可行的例子,我把Moe的日期改为从今天起7天。