gpt4 book ai didi

python - 在排序的 Pandas 数据帧上有效搜索范围

转载 作者:太空宇宙 更新时间:2023-11-03 15:18:51 26 4
gpt4 key购买 nike

我想搜索 Pandas 数据帧排序列(换句话说,排序系列)中某个范围内的值。有数百万行,因此性能很重要,我想使用二分搜索来降低复杂性。

第一个问题是 Pandas.Series.searchsorted(value),我无法判断该值是否确实存在于该系列中。例如:

>>x = pds.Series([1,2,3])
>>x.searchsorted(1) -> return 0
>>x.searchsorted(-1) -> return 0

如何使用此函数判断该值是否确实存在于系列中?

第二个问题是搜索范围。我更喜欢像 Pandas.Series.searchsorted(range) 这样的东西来返回范围内值的第一个索引。

有什么软件包可以帮忙吗?我正在考虑编写自己的二分搜索函数,但我不想破坏 Pandas/numpy 的性能优势。深入 Cython 是我唯一的选择吗?

最佳答案

要检查某个值是否存在于系列中,您可以获取返回索引处的值并检查它们是否相等:

x = pd.Series([1,2,3])

# value doesn't exist
value = 0.5
x.iat[x.searchsorted(value)[0]] == value
# False

# value exists
value = 1
x.iat[x.searchsorted(value)[0]] == value
# True

关于python - 在排序的 Pandas 数据帧上有效搜索范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43671082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com