假设我们有 pandas 数据框,如下所示:
df = pd.DataFrame(
{'A': [0, 0, 1, 0],
'a': list('aaaa'),
'B': [1, 0 , 0, 1],
'b': list('bbbb'),
'C': [1, 1, 0, 1],
'c': list('cccc'),
'D': [0, 1, 0, 1],
'd': list('dddd')},
index=[1, 2, 3, 4])
输出将是:
A a B b C c D d
1 0 a 1 b 1 c 0 d
2 0 a 0 b 1 c 1 d
3 1 a 0 b 0 c 0 d
4 0 a 1 b 1 c 1 d
所以现在我想获取此数据帧的行,其中至少在列 A
、B
、C
中依次包含两个零>,D
。
对于上面的数据帧,索引为 2 和 3 的行满足以下条件:第二行的列 A
、B
包含零,列 B
, C
对于第三行来说就足够了。
如果我想找到三个或更多连续的零,那么找到这样的序列的方法应该有效。
所以最终我想要一个 bool 系列,它应该看起来像:
1 false
2 true
3 true
4 false
使用该系列作为原始数据帧的掩码。
最佳答案
选择数字列,然后使用 shift
进行比较:
u = df.select_dtypes(np.number).T
((u == u.shift()) & (u == 0)).any()
1 False
2 True
3 True
4 False
dtype: bool
关于python - 如何有效检查 pandas 数据帧每行中的连续值范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55961058/