首页 > 解决方案 > 第一个大于 x 的 pandas DataFrame 列索引

问题描述

我知道将 pandas DataFrame 列转换为列表(使用.tolist()or list()),然后做你想做的事情,这会慢得多,所以我不想使用这些方法

我想找到一个等于或大于一个值的 pandas DataFrame 列的第一个元素的索引,x换句话说>=x。如果没有,则返回None

例如,如果列是 this 并且我们的函数被调用first_greater()

    0
0   1
1  -5
2   6
3   4
4  -7
5  12
6  -2
7   0
8  -3

然后我们有:

first_greater(-5) = 0
first_greater(7) = 5
first_greater(4) = 2
first_greater(6) = 2
first_greater(22) = None

我是熊猫新手,我不知道该怎么做。任何帮助,将不胜感激。

标签: pythonpandasdataframe

解决方案


您要检查数据框中的任何值是否大于给定值,并返回满足条件的第一个值。你有idxmax这个:

def first_greater(df, n, col):
    m = df.col.ge(n)
    return m.any() and m.idxmax() 

and请注意,在 return 语句中,仅当满足第一个条件时才计算的右侧部分m.any(),否则False返回。


让我们检查一下建议的示例:

first_greater(df, 5, 'col1')
# 0

first_greater(df, 7, 'col1')
# 5

first_greater(df, 4, 'col1')
# 2

first_greater(df, 6, 'col1')
# 2

first_greater(df, 22, 'col1')
# False

输入数据 -

    col1
0     1
1    -5
2     6
3     4
4    -7
5    12
6    -2
7     0
8    -3

推荐阅读