我有一个如下所示的数据框
Date Status Price
2019-10-07 10:24:51 Yes 20
2019-10-07 10:27:56 No 50
2020-01-13 12:27:54 No 40
2020-01-13 10:27:50 Yes 80
2020-01-13 12:28:52 Yes 45
根据上述数据,我想根据今天的日期(日期和状态==是)进行过滤。
注意:我必须根据今天的日期时间每天运行一次。
预期输出:
Date Status Price
2020-01-13 10:27:50 Yes 80
2020-01-13 12:28:52 Yes 45
答案 0 :(得分:2)
将boolean indexing
与Series.dt.date
与今天date
创建的比较日期一起使用,并通过比较Yes
的值来屏蔽链:
df['Date'] = pd.to_datetime(df['Date'])
df = df[df['Date'].dt.date.eq(pd.to_datetime('now').date()) & df['Status'].eq('Yes')]
#in last versions of pandas is possible compare dates with today datime
df = df[df['Date'].dt.date.eq(pd.to_datetime('now')) & df['Status'].eq('Yes')]
print (df)
Date Status Price
3 2020-01-13 10:27:50 Yes 80
4 2020-01-13 12:28:52 Yes 45
详细信息:
print (pd.to_datetime('now'))
2020-01-13 07:42:02.592142
print (pd.to_datetime('now').date())
2020-01-13
答案 1 :(得分:1)
您可以使用:
#df['Date']=pd.to_datetime(df['Date']) if needed convert to datetime first
df[df['Date'].dt.date.eq(pd.to_datetime('today')) & df['Status'].eq('Yes')]
Date Status Price
3 2020-01-13 10:27:50 Yes 80
4 2020-01-13 12:28:52 Yes 45