python - 如何有效检查 pandas 数据帧每行中的连续值范围?

标签 python pandas dataframe

假设我们有 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

所以现在我想获取此数据帧的行,其中至少在列 ABC 中依次包含两个零>,D
对于上面的数据帧,索引为 2 和 3 的行满足以下条件:第二行的列 AB 包含零,列 BC 对于第三行来说就足够了。

如果我想找到三个或更多连续的零,那么找到这样的序列的方法应该有效。

所以最终我想要一个 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/

相关文章:

python - 未解析的外部符号构建 Python C 扩展

python - 如何使用 cProfile 获得更精细的结果

python - 在 Google App Engine 中部署 Flex 环境时出现错误 : (gcloud. app.deploy) 错误响应:[13]

python - 有没有办法打破带有类别的 pandas 列,以将类别名称作为列名称来分隔 true 或 false 列

python - 绘制 Pandas Multiindex 条形图

r - 有没有办法将特定的省略号参数仅应用于某些函数,而不应用于其他函数?

Python连接存储在列表中的不同大小的数组

python - 如何用pandas读取Spark写的文件?

python - Pandas : first datetime field gets automatically converted to timestamp type

R - 在坐标对的数据框中获取坐标对的行号