使用pandas isin选择日期

时间:2016-06-17 08:27:07

标签: python date pandas

之前曾经问过像我这样的类似问题,但不幸的是答案无法解决我的问题。 我有两组数据列:1。第一列生成如下:

t = pd.bdate_range(start='2016-05-16', end='2016-06-15')

这给出了:

DatetimeIndex: DatetimeIndex(['2016-05-16', '2016-05-17', '2016-05-18', ...
  1. 第二个是从数组中选择的:

    v = myArray ['Date']

  2. 这给出了:

    Series: 0 2016-05-17
    1 2016-05-17
    2 2016-05-17
    

    这第二个数据输出是一个大约40k条目的大系列。在这个例子中日期没有改变的原因是因为每两分钟有一个时期因此日期是相同的,直到午夜。由于此阵列目前从2016-05-17到2016-06-17,我想减少这个,以便只考虑工作日。我试过了:

    h = pd.DataFrame(t)
    u = pd.Series(t)
    k = pd.DataFrame(v)
    w = pd.Series(v)
    

    然后我尝试了isin方法的各种排列:

    w.isin(t)
    w.isin(t.values)
    k.isin(t.values)
    

    我只是在isin检查开始时没有看到任何布尔值为True。一切似乎都是假的。我哪里错了?为了使其工作,我是否需要更多地关注数组的格式?

1 个答案:

答案 0 :(得分:0)

您正在寻找v.weekday < 5

v = pd.date_range(start='2016-05-16', end='2016-06-15', freq='2H')
v[v.weekday < 5]

DatetimeIndex(['2016-05-16 00:00:00', '2016-05-16 02:00:00',
               '2016-05-16 04:00:00', '2016-05-16 06:00:00',
               '2016-05-16 08:00:00', '2016-05-16 10:00:00',
               '2016-05-16 12:00:00', '2016-05-16 14:00:00',
               '2016-05-16 16:00:00', '2016-05-16 18:00:00',
               ...
               '2016-06-14 06:00:00', '2016-06-14 08:00:00',
               '2016-06-14 10:00:00', '2016-06-14 12:00:00',
               '2016-06-14 14:00:00', '2016-06-14 16:00:00',
               '2016-06-14 18:00:00', '2016-06-14 20:00:00',
               '2016-06-14 22:00:00', '2016-06-15 00:00:00'],
              dtype='datetime64[ns]', length=265, freq=None)

这一点并不明显,但这些只是工作日。

相关问题