昨天筛选一周

阿斯
df
0   2021-08-01    20
1   2021-09-01    10
...
20  2021-17-01    18

如何在常规代码中仅保留昨天(1月16日)到昨天(1月10日)之前一周之间的日期?我试过了:

df[df.date >((datetime.datetime.now() - timedelta (1)) - pd.timedelta("7day")]
马那金

您可以使用pd.DateOffset并创建一些布尔语句来过滤数据框。

yesterday = pd.Timestamp('today') - pd.DateOffset(1,'D')
one_week_from_yesterday = yesterday - pd.DateOffset(7,'D')
date_filter = df['date'].le(yesterday) & df['date'].ge(one_week_from_yesterday)
df1 = df[date_filter]

@Shubham Sharma已注意到使用Series.between

df1 = df[df['date'].between(one_week_from_yesterday,yesterday)]

设定。

import pandas as pd 
d = pd.date_range('01 Jan 2021', pd.Timestamp('now'),freq='D')
df = pd.DataFrame({'date' : d})

print(df)

      date
0  2021-01-01
1  2021-01-02
2  2021-01-03
3  2021-01-04
4  2021-01-05
5  2021-01-06
6  2021-01-07
7  2021-01-08
8  2021-01-09
9  2021-01-10
10 2021-01-11
11 2021-01-12
12 2021-01-13
13 2021-01-14
14 2021-01-15
15 2021-01-16
16 2021-01-17

yesterday = pd.Timestamp('today') - pd.DateOffset(1,'D')
one_week_from_yesterday = yesterday - pd.DateOffset(7,'D')


date_filter = df['date'].le(yesterday) & df['date'].ge(one_week_from_yesterday)

0     False
1     False
2     False
3     False
4     False
5     False
6     False
7     False
8      True
9      True
10     True
11     True
12     True
13     True
14     True
15     True
16    False
Name: date, dtype: bool

 df[date_filter]

 date
8  2021-01-09
9  2021-01-10
10 2021-01-11
11 2021-01-12
12 2021-01-13
13 2021-01-14
14 2021-01-15
15 2021-01-16

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章