我对.loc
函数有一点疑问。
这是代码:
date = df.loc [df ['date'] == d] .index [0]
d
是一个特定日期(例如,2019年11月21日)
问题在于周末可能需要几天。在date
列的数据框中,没有周末的值。 (仅包含工作日的日历天)
如果d
在周末,他有第二天参加吗?
我会有类似index.get_loc
,method = bfill
有人知道如何为.loc
实现它吗?
答案 0 :(得分:0)
IIUC,您希望将格式为dd.mm.yyyy
的日期移动到最近的星期一(如果它们恰好在周末降落),或将其保留为当前日期(如果它们是工作日)。最有效的方法是在将d
传递给pandas.loc[...]
之前先对其进行修改,而不是寻找最近的邻居。
我的意思是:
import datetime
d="22.12.2019"
dt=datetime.datetime.strptime(d, "%d.%m.%Y")
if(dt.weekday() in [5,6]):
dt=dt+datetime.timedelta(days=7-dt.weekday())
d=dt.strftime("%d.%m.%Y")
输出:
23.12.2019
修改
为了只取第一个日期,请在数据框中输入d
或之后,尝试:
import datetime
df['date']=pd.to_datetime(df['date'], format='%d.%m.%Y')
dt=datetime.datetime.strptime(d, "%d.%m.%Y")
d=df.loc[df ['date'] >= d, 'date'].min()
dr.loc[df['date']==d]...
...