在pandas中,如何找到累积和大于阈值的行/索引?

时间:2017-12-13 16:12:25

标签: python pandas

我想找到某一列中值的累积总和超过阈值的行(索引)。

我可以并且确实使用一个简单的循环找到这个位置,如下所示:

def sum_to(df, col, threshold):
    s = 0
    for r in df.iterrows():
        if s + r[1][col] > threshold:
            return r[0]
        else:
            s += r[1][col]

    return len(df)

但是,我想知道在熊猫中是否有更好/更好的方法来实现这一目标。

2 个答案:

答案 0 :(得分:5)

最简单的方法可能是

df[col].cumsum().searchsorted(threshold)

但这假设您的列中没有负数。

答案 1 :(得分:0)

所以你想要这样的东西:

df = pd.DataFrame({'A': [1, 2, 3, 4, 5]})
df[df['A'].cumsum() > 5]
#  A
#2 3
#3 4
#4 5