返回两个日期之间的列索引

时间:2019-12-16 13:19:00

标签: python pandas

我的列索引的类型为datetime,如下所示:

df.columns
Out[142]: Index([2017-01-01, 2017-01-20, 2017-02-08, 2017-02-27, 2017-03-18, 2017-04-06,
       2017-04-25, 2017-05-14, 2017-06-02, 2017-06-21, 2017-07-10, 2017-07-29,
       2017-08-17, 2017-09-05, 2017-09-24, 2017-10-13, 2017-11-01, 2017-11-20,
       2017-12-09, 2017-12-28, 2018-01-16, 2018-02-05, 2018-02-24, 2018-03-15,
       2018-04-03, 2018-04-22, 2018-05-11, 2018-05-30, 2018-06-18, 2018-07-07,
       2018-07-26, 2018-08-14, 2018-09-02, 2018-09-21, 2018-10-10, 2018-10-29,
       2018-11-17, 2018-12-06],
      dtype='object')

我试图返回两个日期之间的df中的索引,但是我不知道如何包含两个条件。

我可以通过一种方式做到这一点:

start = datetime.date(2018, 4, 15)
end = datetime.date(2018, 5, 2)

df.columns < end
Out[146]: array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
    True,  True,  True,  True,  True,  True,  True,  True,  True,
    True,  True,  True,  True,  True,  True,  True,  True, False,
   False, False, False, False, False, False, False, False, False,
   False, False])

但是当我同时尝试两者时:

start < customer_flag_table.columns < end

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

如何返回日期之间的索引?

2 个答案:

答案 0 :(得分:0)

<>不能链接

(start < customer_flag_table.columns) &(customer_flag_table.columns < end)

答案 1 :(得分:0)

由于您的DataFrame具有datetime作为索引,因此您可以像这样使用.loc切片:

df.loc(axis=1)['2018-04-15': '2018-05-02']

dates         2018-04-22
some_data     0.050737

这里的another answer处理您的datetime是否不是索引。