找到大于等级的值 - Python Pandas

时间:2016-08-10 00:59:19

标签: python pandas

在时间序列(有序元组)中,第一次找到标准时找到最有效的方法是什么?

特别是,对于pandas数据框中的列值,确定值何时超过100的最有效方法是什么?

我希望有一个聪明的矢量化解决方案,而不必使用df.iterrows()

例如,对于价格或计数数据,当值超过100时。 df ['col']> 100。

              price
date 
2005-01-01     98
2005-01-02     99
2005-01-03     100
2005-01-04     99
2005-01-05     98
2005-01-06     100
2005-01-07     100
2005-01-08     98

但可能是非常大的系列。是迭代(慢)还是有矢量化解决方案更好?

df.iterrows()解决方案可以是:

for row, ind in df.iterrows():
    if row['col'] > value_to_check:
        breakpoint = row['value_to_record'].loc[ind]
        return breakpoint
return None

但我的问题更多的是关于效率(可能是一个可以很好地扩展的矢量化解决方案)。

2 个答案:

答案 0 :(得分:7)

试试这个:“> 99”

df[df['price'].gt(99)].index[0]

返回"2",第二个索引行。

所有行索引大于99

df[df['price'].gt(99)].index
Int64Index([2, 5, 6], dtype='int64')

答案 1 :(得分:0)

这将返回系列中第一次出现的100的索引值:

 index_value = (df['col'] - 100).apply(abs).idxmin()

如果没有值正好为100,则应返回最接近值的索引。