pandas -第一个大于给定值的值

4szc88ey  于 2023-06-04  发布在  其他
关注(0)|答案(2)|浏览(192)

让我们假设x是一个排序列,其中包含一些具有“<”关系的数据(例如浮点数、整数、字符串)。给定一个常数,比如5,我想提取x中第一个大于这个常数的值。
现在,我不想使用像“x > 5”这样的布尔比较,因为这将涉及一些不必要的比较。所以我的问题是有没有一个简单的函数,我可以使用,没有隐式循环所有元素的技巧?
本质上,我想要类似于带有break语句的for循环的东西--一旦找到第一个大于x的值。(C速度)

scyqe7ek

scyqe7ek1#

import bisect

def find_first_greater(sorted_column, constant):
    index = bisect.bisect_right(sorted_column, constant)
    if index < len(sorted_column):
        return sorted_column[index]
    else:
        return None  # No value greater than the constant found

# Example usage
x = [1, 3, 5, 7, 9]
constant = 5
result = find_first_greater(x, constant)
print(result)  # Output: 7

在上面的例子中,bisect.bisect_right(sorted_column,constant)返回一个索引,在该索引处,常量应该被插入到排序列中以保持其顺序。通过访问sorted_column[index],您将获得第一个大于常量的值。如果索引等于列的长度,则意味着没有值大于常量。
bisect模块是用C实现的,它提供了一种在排序列表中查找插入点的有效方法,使其成为您的任务的合适选择。

pgky5nke

pgky5nke2#

import pandas as pd
import numpy as np

# assuming df is your DataFrame and 'column' is your sorted column
df = pd.DataFrame({'column': [1, 2, 3, 4, 5, 6, 7, 8, 9]})

# set the constant
constant = 5

# get the first value in 'column' that is greater than the constant
value = df.loc[np.argmax(df['column'] > constant), 'column']

print(value)

还有numpy

相关问题