检查一行的值是否连续

时间:2019-01-07 14:32:09

标签: python pandas dataframe

我有这样的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

每行中的所有值都不同且具有递增顺序的地方。

如果至少有两个连续数字,我想用10创建一个新列。 例如,第二和第三行具有1011,以及2627。是否有比使用迭代器更Python化的方式? 谢谢

1 个答案:

答案 0 :(得分:8)

使用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)