【发布时间】:2020-07-24 06:15:37
【问题描述】:
我正在尝试使用掩码来过滤和显示我感兴趣的日期。这是我当前的代码:
# mask date range
start_date = '2019-10-01'
end_date = '2019-11-01'
mask1 = (df['StartTime'] >= start_date) & (df['StartTime'] < end_date)
# mask dayofweek
mask2 = (df.StartTime.dt.dayofweek == 0)
mask = mask1 & mask2
#apply mask
df.loc[mask]
上面的代码显示了 mask2 dayofweek(0 = 星期一)的 mask1 日期范围(2019-10-01 到 2019-11-01)内的所有日期。 不过我对周一到周四有兴趣,所以需要调整 mask2。
以下是我尝试过的一些事情:
#this doesn't work:
mask2 = (0<=df.StartTime.dt.dayofweek<=3)
#this doesn't work:
mask2 = (df.StartTime.dt.dayofweek == 0) or (df.StartTime.dt.dayofweek == 1) or (df.StartTime.dt.dayofweek == 2) or (df.StartTime.dt.dayofweek == 3)
您能告诉我最好的方法是什么吗?提前谢谢你。
【问题讨论】:
-
@Rakesh 返回错误
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). -
df.query 可能是你的朋友。 pandas.pydata.org/pandas-docs/stable/reference/api/…
标签: python pandas date filter mask