gpt4 book ai didi

python - 使用 Pandas 的过滤器计算值之间的差异

转载 作者:太空宇宙 更新时间:2023-11-03 11:24:18 24 4
gpt4 key购买 nike

我有一个数据框,每一行都包含有关事件的信息以及事件是否成功。我想计算不成功事件之间的增量,我知道如何计算字段之间的差异,但在使用过滤器时不知道。

我的数据框有这样的结构:

      Timestamp     Status          
0 2012-01-01 OK
1 2012-01-02 OK
2 2012-01-03 FAIL
3 2012-01-05 OK
4 2012-01-06 OK
5 2012-01-07 FAIL

我想要的是计算每一行的时间直到下一次失败,所以 somtethin 是这样的:

      Timestamp     Status     Days_until_next_fail              
0 2012-01-01 OK 2
1 2012-01-02 OK 1
2 2012-01-03 FAIL 0
3 2012-01-05 OK 2
4 2012-01-06 OK 1
5 2012-01-07 FAIL 0

我试过这个:

df['days_until_next_failure'] = df.Timestamp - df[(df.Status == '1')].Timestamp(+1)

但这会返回 NaT,我在文档中找不到任何内容来应用过滤和使用 shift。一种选择是从末尾开始遍历数据帧,但这似乎有点低效。

最佳答案

以下给出自上次失败以来的天数,而不是距离下一次失败的天数:

is_fail = (df.Status != 'OK')
cumulative_fails = is_fail.cumsum()
fail_idx, = is_fail.nonzero()
days_since_last_fail = arange(len(is_fail))
days_since_last_fail[fail_idx[0]:] -= fail_idx[cumulative_fails[fail_idx[0]:]-1]

如果你想要正确的版本,那么你可以自己调整它,或者可能只是在开始和结束时反转原始数组。

关于python - 使用 Pandas 的过滤器计算值之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37026109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com