有没有一种简单的方法可以在数据框中隔离 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 格式的给定日期间隔? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

填补熊猫数据框中的日期空白

合并数据框中的行,其中行不相交并包含 NA

试图在r中隔离数据框中的两列[重复]

冻结熊猫数据框中的标头

SQL 隔离级别

如何根据熊猫数据框中的部分匹配来隔离重复项