python - 在 pandas 中的特定行之后查找满足条件的下一个第一行

标签 python pandas dataframe

我有一个像这样的 pandas 数据框:

    first   second
0   True    False
1   False   True
2   True    True
3   False   False
4   False   True
5   False   True
6   True    False
7   False   False

可以使用以下代码创建:

import pandas as pd

df = pd.DataFrame(
    {
        'first': [True, False, True, False, False, False, True, False], 
        'second': [False, True, True, False, True, True, False, False]
    }
)

对于第一列中具有True值的任何行,我想在接下来的行中找到该值的第一行第二列的值为True

所以输出应该是:

    first   second
1   False   True
4   False   True

此外,我的首要任务是不使用任何 for 循环。

你对此有什么想法吗?

最佳答案

您可以使用:

g = df['first'].ne(df['first'].shift()).cumsum().loc[~df['first']]
# or
# g = df['first'].cumsum()[~df['first']]

out = df[df['second']].groupby(g).head(1)

输出:

   first  second
1  False    True
4  False    True

中石斑鱼g:

1    2
3    4
4    4
5    4
7    6
Name: first, dtype: int64

关于python - 在 pandas 中的特定行之后查找满足条件的下一个第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73057952/

相关文章:

python - 在 Python 2 和 Python 3 中子类化内置类型

r - pretty-print 数据框时如何增加列之间的空间?

python - pandas 查找日期属于哪半年

dataframe - 重命名 PySpark DataFrame 聚合的列

python - Openid报错: Received "invalidate_handle" from server是什么原因

python - python 中 C++ vector 的实例(对于 pyROOT 中的 TTrees)

python - Django 1.7 - makemigrations 未检测到更改

python - DataFrame.apply 可以引用前面的行吗?

pandas - 在 Seaborn 的 distplot 或 kdeplot 的平均峰值处画一个点

python - 有没有办法改变数据帧字典中数据帧的列中的值?