【问题标题】:Using pandas isin with selecting dates使用 pandas isin 选择日期
【发布时间】:2016-06-17 08:27:06
【问题描述】:

之前有人问过类似我的问题,但不幸的是,答案无法解决我的问题。 我有两组数据列: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']

这给出:

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 检查的开头没有看到任何为真的布尔值。一切似乎都是假的。我哪里错了?为了让它工作,我需要更多地注意数组的格式吗?

【问题讨论】:

标签: python date pandas


【解决方案1】:

您正在寻找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)

这不是很明显,但这只是工作日。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    相关资源
    最近更新 更多