按月分组和按季度过滤

grouping by month and Filtering by quarter

我有一个名为 Date Opened 的列,它是一个日期字段。它的数据类型是 datetime64[ns]。我想要做的是 运行 通过 Date Opened 列中我的数据框中的所有日期,然后以某种方式创建一个具有特定日期的新列。我的日期格式如下所示:

'2012-05-16'

我想知道是否有任何方法可以 运行 通过这些日期,并且只返回 1 月、2 月、3 月、4 月、5 月、6 月和 7 月的日期、8 月、9 月,最后是 10 月、11 月、12 月,将它们放入一个单独的列中,我可以按季度过滤,因此对于 1 月、2 月、3 月,这将是 Q1,然后下一组三个将是 Q2,依此类推上,而且年份并不完全相同,所以这就是为什么我想按季度分组和过滤。

'2012-01-03', '2013-02-03', '2012-03-12'
'2012-01-10', '2013-02-07', '2012-03-13'
'2012-01-13', '2013-02-15', '2012-03-18'
'2012-01-16', '2013-02-19', '2012-03-20'
'2012-01-22', '2013-02-20', '2012-03-21'
'2012-01-23', '2013-02-21', '2012-03-25'
'2012-01-28', '2013-02-28', '2012-03-27'

我试过使用日期时间并将它们分组,但我似乎无法将它们放在自己的列中,而且我不希望日期依赖于年份,我只想按月提取日期(quarter) 所以不管是哪一年,他们还是按照他们所在的季度带进来。

您可以使用 quarter 属性创建一个包含每个日期的数字季度的附加列,然后基于该列进行过滤。

In [17]: df = pd.DataFrame({'Date Opened': s, 'foo': ['test', 'bar']})

In [18]: df
Out[18]: 
  Date Opened   foo
0  2016-12-14  test
1  2014-03-12   bar

In [19]: df['quarter'] = df['Date Opened'].dt.quarter

In [20]: df
Out[20]: 
  Date Opened   foo  quarter
0  2016-12-14  test        4
1  2014-03-12   bar        1