python - 第一个大于 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
我是熊猫新手,我不知道该怎么做。任何帮助,将不胜感激。
解决方案
您要检查数据框中的任何值是否大于给定值,并返回满足条件的第一个值。你有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