按月分组和按季度过滤

时间:2017-02-23 14:03:35

标签: python pandas datetime dataframe timedelta

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

'2012-05-16'

我想知道是否有任何方法可以浏览日期并且只返回日期,即jan,feb,mar,然后apr,may,jun和jul,aug,sep和最后oct,nov,dec,把它们放到一个单独的列中,我可以按季度过滤,所以jan,feb,mar,那将是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'

我已经尝试过使用datetime并对它们进行分组,但我似乎无法将它们放在自己的专栏中,而且我不希望日期依赖于年份,我想只按月(季度)来提取日期所以,不管它是哪一年,它们仍然只是按照它们所属的那个季度把它们带进来。

1 个答案:

答案 0 :(得分:0)

您可以使用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