Pandas -筛选候补星期一

1aaf6o9v  于 2023-02-17  发布在  其他
关注(0)|答案(2)|浏览(144)

我有一个按天列出销售数据的Dataframe。我希望能够筛选出每隔一周的星期一的销售数据。例如,如果我选择6月27日,我希望筛选的下一个日期将是7月11日,下一个日期将是7月25日,依此类推。
我的数据框架如下所示

sale_date, count
2022-06-27, 100
2022-07-01, 150
2022-07-07, 100
2022-07-11, 150
2022-06-20, 100
2022-07-25, 150

我希望输出为

sale_date, count
2022-06-27, 100
2022-07-11, 150
2022-07-25, 150
jucafojl

jucafojl1#

您可以用途:

# convert to datetime
date = pd.to_datetime(df['sale_date'])

# is the day a Monday (0 = Monday)?
m1 = date.dt.weekday.eq(0)
# is the week an "even" week?
m2 = date.dt.isocalendar().week.mod(2).eq(0)

# if both conditions are True, keep the row
out = df[m1&m2]

输出:

sale_date  count
0  2022-06-27    100
3  2022-07-11    150
5  2022-07-25    150

中间体:

sale_date  count  weekday  weekday.eq(0)  week  week.mod(2)  week.mod(2).eq(0)
0  2022-06-27    100        0           True    26            0               True
1  2022-07-01    150        4          False    26            0               True
2  2022-07-07    100        3          False    27            1              False
3  2022-07-11    150        0           True    28            0               True
4  2022-06-20    100        0           True    25            1              False
5  2022-07-25    150        0           True    30            0               True
icnyk63a

icnyk63a2#

df11=df1.resample("2w-mon",closed="left",on="sale_date")["count"].first().reset_index()
df11.assign(sale_date=df11.sale_date-pd.Timedelta(days=7))

输出:

sale_date  count
0 2022-06-27    100
1 2022-07-11    100
2 2022-07-25    150

相关问题