我有一个df的数据。我需要能够根据星期几返回某些数据行。
如果它的星期一我需要打印包含过去3天数据的行。如果是星期三或星期五,我需要打印包含过去两天数据的行。
合并两个df来创建一个:
df_new = pd.concat([outcomes_df, specialists_df], ignore_index=True)
df_new['Published Date'] = pd.to_datetime(df_new['Published Date'])
根据今天的日期获取正确的日期:
N=0
if datetime.today().weekday() == 0:
N = 3
elif datetime.today().weekday() == 2 or datetime.today().weekday() == 4:
N = 2
else:
pass
mydate = datetime.now() - timedelta(days=N)
print(mydate)
按日期范围过滤
df_new = df_new[(df_new['Published Date'] >= mydate) & (df_new['Published Date'] <= datetime.today())]
print(mydate)
导致正确的日期
print(df_new)
导致错误:
空DataFrame列:[col1,col2,col3,Published Date]索引:[]
你在这里不需要if else,因为那里也需要循环,这里我使用的是np.select
import numpy as np
s=df_new['Published Date'].dt.weekday
d=np.select([s==0,s.isin([2,4])],[3,2],0)
df_new['mydate']=(pd.to_datetime('today')-pd.to_timedelta(d,unit='D'))
df_new = df_new[(df_new['Published Date'] >= df_new['mydate']) & (df_new['Published Date'] <= datetime.today())]