代码之家  ›  专栏  ›  技术社区  ›  Joe

检查行的值是否连续

  •  3
  • Joe  · 技术社区  · 5 年前

    我有这样一个df:

         1   2   3   4   5   6
    0    5  10  12  35  70  80
    1   10  11  23  40  42  47
    2    5  26  27  38  60  65
    

    其中每行中的所有值都是不同的,并且具有递增顺序。

    我想创建一个新列 1 0 如果至少有两个连续的数字。 例如,第二行和第三行有 10 11 26 27 . 有没有比使用迭代器更像蟒蛇的方法? 谢谢

    1 回复  |  直到 5 年前
        1
  •  8
  •   jezrael    5 年前

    使用 DataFrame.diff 对于每行的差异,比较依据 1 ,检查是否至少有一个 True 每行和最后一次转换为整数:

    df['check'] = df.diff(axis=1).eq(1).any(axis=1).astype(int)
    print (df)
        1   2   3   4   5   6  check
    0   5  10  12  35  70  80      0
    1  10  11  23  40  42  47      1
    2   5  26  27  38  60  65      1
    

    用于提高性能 numpy :

    arr = df.values
    df['check'] = np.any(((arr[:, 1:] - arr[:, :-1]) == 1), axis=1).astype(int)