如何通过指定区间快速检索并输出相应行的数值?
- 内容介绍
- 相关推荐
本文共计736个文字,预计阅读时间需要3分钟。
使用pandas的`IntervalIndex`和`reindex`方法,可以高效地判断目标值是否落在DataFrame中某列构成的时间区间内,并返回指定行的计算结果。以下是一个简单的示例:
在数据分析中,常需将一组离散点(如传感器读数、坐标、时间戳)映射到预定义的连续区间(如分段阈值、地理区域、时间窗口),并提取对应区间的聚合信息。本例中,df 定义了若干左闭右开(默认)的数值区间 [A, B),每行代表一个范围;df2 包含待查询的浮点型 Point 值。目标是:对每个 Point,定位其所属的 [A, B) 区间,并返回该区间所在行的 A + B 作为新列 Returned Data。
核心思路是将区间结构化为索引,而非逐行比对。pandas 提供的 pd.IntervalIndex.from_arrays() 可将两列数值快速构造成可哈希、可查找的区间索引;再将 A + B 的和构建为以该区间索引为键的 Series,即可通过 reindex() 实现向量化区间查找——底层自动完成二分搜索,时间复杂度为 O(log n),远优于 apply(lambda x: ...) 或 np.where 的 O(n²) 方案。
本文共计736个文字,预计阅读时间需要3分钟。
使用pandas的`IntervalIndex`和`reindex`方法,可以高效地判断目标值是否落在DataFrame中某列构成的时间区间内,并返回指定行的计算结果。以下是一个简单的示例:
在数据分析中,常需将一组离散点(如传感器读数、坐标、时间戳)映射到预定义的连续区间(如分段阈值、地理区域、时间窗口),并提取对应区间的聚合信息。本例中,df 定义了若干左闭右开(默认)的数值区间 [A, B),每行代表一个范围;df2 包含待查询的浮点型 Point 值。目标是:对每个 Point,定位其所属的 [A, B) 区间,并返回该区间所在行的 A + B 作为新列 Returned Data。
核心思路是将区间结构化为索引,而非逐行比对。pandas 提供的 pd.IntervalIndex.from_arrays() 可将两列数值快速构造成可哈希、可查找的区间索引;再将 A + B 的和构建为以该区间索引为键的 Series,即可通过 reindex() 实现向量化区间查找——底层自动完成二分搜索,时间复杂度为 O(log n),远优于 apply(lambda x: ...) 或 np.where 的 O(n²) 方案。

