另一个datetimeindex子集?

时间:2016-02-26 16:31:58

标签: pandas

检查pandas DateTimeIndex是否完全是另一个的子集的最快方法是什么?

我正在考虑将两个索引的交集与较小的索引进行比较:首先是长度,然后是内容。

2 个答案:

答案 0 :(得分:1)

这样的事情可以做到:

index_1 = pd.date_range('1/1/2016', periods=100, freq='H')
index_2 = pd.date_range('1/3/2016', periods=15, freq='H')
set(index_2).issubset(index_1)

或:

set(index_1).issuperset(index_2)

答案 1 :(得分:1)

valtuarte's answer的替代方法是使用内置的DatetimeIndex.intersection方法:

import pandas as pd
import numpy as np
one = pd.date_range('1/1/2011', periods=72, freq='H')
two = pd.date_range('1/2/2011', periods=12, freq='H')

# either...
np.all(one.intersection(two) == two)

# ...or
one.intersection(two).equals(two)

对于大型指数,此解决方案明显更快(下面的测试是720k和120k周期):

In [10]: %timeit set(one).issuperset(two)
1 loops, best of 3: 992 ms per loop

In [11]: %timeit np.all(one.intersection(two) == two)
100 loops, best of 3: 8.8 ms per loop

In [12]: %timeit one.intersection(two).equals(two)
100 loops, best of 3: 8.77 ms per loop

编辑添加了替代(略快)的方式来比较Index平等。