Python 对于多个值中的任意一个值,使用
我有一个像这样的熊猫数据框Python 对于多个值中的任意一个值,使用,python,pandas,Python,Pandas,我有一个像这样的熊猫数据框 data = [["2020-01-01", "2020-01-01"], ["2020-01-02", "2020-01-04"], ["2020-01-05", "2020-01-06"]] df = pd.DataFrame(data, columns=["START", "END"]).astype({
data = [["2020-01-01", "2020-01-01"], ["2020-01-02", "2020-01-04"], ["2020-01-05", "2020-01-06"]]
df = pd.DataFrame(data, columns=["START", "END"]).astype({"END": "datetime64[ns]" , "START": "datetime64[ns]"})
开始
结束
0
2020-01-01
2020-01-01
1.
2020-01-02
2020-01-04
2.
2020-01-05
2020-01-06
如果可能,请使用通过最小值和最大值从时间戳创建时间间隔:
s = pd.IntervalIndex.from_arrays(df['START'],
df['END'],
closed='both')
i = pd.Interval(timestamps.min(), timestamps.max(), closed='both')
out = s.overlaps(i)
print (out )
[False True False]
我们可以广播
开始
和结束
列中的值,以创建布尔掩码,然后沿轴=1减少生成的布尔掩码
t = timestamps.values
((df['START'].values[:, None] <= t) & (df['END'].values[:, None] >= t)).any(1)
这不是我真正需要的。我不想将时间戳转换为一个间隔,但对于s中的每个间隔,请检查它是否包含来自时间戳的至少一个时间戳。
array([False, True, False])