有没有一种简单的方法可以在数据框中隔离 YYYY-MM-DD 格式的给定日期间隔? [复制]
Posted
技术标签:
【中文标题】有没有一种简单的方法可以在数据框中隔离 YYYY-MM-DD 格式的给定日期间隔? [复制]【英文标题】:Is there an easy way to isolate a given interval of dates that are in YYYY-MM-DD format in a dataframe? [duplicate] 【发布时间】:2021-10-03 00:13:04 【问题描述】:是否有一种简单的方法可以在数据框中隔离 YYYY-MM-DD 格式的给定日期间隔?就像只包括 2005-2014 之间的日期并从数据框中删除其余日期
有没有办法将正则表达式集成到其中,还是太难了?
【问题讨论】:
这能回答你的问题吗? Filtering Pandas DataFrames on dates 日期没有格式,它们是二进制值。格式仅在将日期格式化为字符串或将字符串解析为日期时适用。如果加载字符串而不是日期,则需要在过滤数据之前将它们转换为日期。一旦你这样做了,过滤就像任何其他类型的数据一样简单 【参考方案1】:是的,有可能:
>>> 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')]
【讨论】:
【参考方案2】:您可以使用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
【讨论】:
以上是关于有没有一种简单的方法可以在数据框中隔离 YYYY-MM-DD 格式的给定日期间隔? [复制]的主要内容,如果未能解决你的问题,请参考以下文章