检查pandas DateTimeIndex是否完全是另一个的子集的最快方法是什么?
我正在考虑将两个索引的交集与较小的索引进行比较:首先是长度,然后是内容。
答案 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
平等。