是否有一种简单的方法可以在数据框架中隔离YYYY-MM-DD格式的给定日期间隔?比如只包括2005-2014年之间的日期,并从数据框架中删除其他日期
是否有一种方法可以将正则表达式集成到此,或者它太难了?
这是可能的:
>>> df
date
0 2000-12-31
1 2001-12-31
2 2002-12-31
3 2003-12-31
4 2004-12-31
5 2005-12-31
6 2006-12-31
7 2007-12-31
8 2008-12-31
9 2009-12-31
10 2010-12-31
11 2011-12-31
12 2012-12-31
13 2013-12-31
14 2014-12-31
15 2015-12-31
16 2016-12-31
17 2017-12-31
18 2018-12-31
19 2019-12-31
20 2020-12-31
>>> df[(df['date'].dt.year >= 2005) & (df['date'].dt.year <= 2014)]
date
5 2005-12-31
6 2006-12-31
7 2007-12-31
8 2008-12-31
9 2009-12-31
10 2010-12-31
11 2011-12-31
12 2012-12-31
13 2013-12-31
14 2014-12-31
或字符串版本:
>>> df[(df['date'] >= '2004') & (df['date'] <= '2014')]
或:
>>> df[df['date'].between('2004', '2014')]
您可以使用between操作符,它既适用于日期,也适用于数字和字符串。参见下面的示例-
df = pd.DataFrame({"A": [datetime(2020, 1,1), datetime(2019,1,1), datetime(2018,1,1)], 'B': ['2020-01-01', '2019-01-01', '2018-01-01']})
df[df['B'].between('2018-06-01', '2021-01-01')]
A B
0 2020-01-01 2020-01-01
1 2019-01-01 2019-01-01
df[df['A'].between(datetime(2018,6,1), datetime(2021,1,1))]
A B
0 2020-01-01 2020-01-01
1 2019-01-01 2019-01-01