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] 删除。
我来说两句