python - 根据列中的条件选择行中的数据

标签 python pandas

我有一个包含两列的 xls 文件,我想在 pandas 中阅读这些文件。 然后从创建的数据框中,我想根据列结果中的条件输出另一个 xls 文件。

如果结果列中的数据等于失败并且输出 xls 文件应包含来自上方 1 行和下方 1 行的数据以及来自失败行本身的数据。

显示的输入和输出示例

输入:

Team    result
1   pass
2   pass
3   fail
4   pass
5   pass
6   pass
7   fail
8   pass
9   pass
10  pass
11  pass
12  pass
13  pass
14  fail
15  pass

输出:

Team    result
2   pass
3   fail
4   pass
6   pass
7   fail
8   pass
13  pass
14  fail
15  pass

最佳答案

使用居中 rolling对从等于目标(“失败”)派生的 bool 系列求和,然后执行 boolean indexing :

df[df['result'].eq('fail').rolling(3, center=True, min_periods=1).max().eq(1)]

注意。 这使得选择下方/之后的更多行变得容易。例如,要获得上面的 2 + 下面的 2,请使用 5(一般情况下为 2*n+1)作为滚动窗口。

输出:

    Team result
1      2   pass
2      3   fail
3      4   pass
5      6   pass
6      7   fail
7      8   pass
12    13   pass
13    14   fail
14    15   pass

关于python - 根据列中的条件选择行中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73853354/

相关文章:

python - 使用文本作为 pandas 中的列标题和列值将字符串拆分为列

python - 将 pandas 系列中的值分开并将它们全部堆叠到列表中?

python - 列表元素与 pandas 列的关键字匹配

python - 尝试在 Python 中拆分 ":"和 ",",但因 ValueError 而失败

python - 如何编写一个每次运行都给出相同输出的 Python 程序?

python - 以 COO 格式构建图连接矩阵

python - 获取带有空日期的行 pandas python

python - LabelEncoder 指定 DataFrame 中的类

python - 如何修改 pandas DataFrame 中的单元格?

python - 从Python 3.5升级到3.7,但IPython仍然使用3.5