我有一个带柱子的框架:

import pandas as pd
import numpy as np
df = pd.DataFrame({
    'A': [False, True, False, False, False, False, True, True, False, True],
    'B': [True, False, False, False, True, True, False, False, False, False ]
})

df

      A      B
0   False   True
1   True    False
2   False   False
3   False   False
4   False   True
5   False   True
6   True    False
7   True    False
8   False   False
9   True    False

如何识别和标记第一次出现的[False - False]值对后的[True - False]?满足此条件的每一行都需要在新列中标记.

在上面的例子中,[3 False False]后面跟着[6 True False][8 False False]后面跟着[9 True False].

这些是本例中唯一有效的解决方案.

推荐答案

您可以使用用途:

# identify start of group
m1 = df.eq([False, False]).all(axis=1)
# condition
m2 = df.eq([True, False]).all(axis=1)
# form groups
group = m1.cumsum()

# keep only rows with valid condition and after a start of group
# get the first value per group
idx = m2[m2 & (group>0)].groupby(group).idxmax().tolist()

# variant
# idx = m2.index.to_series()[m2 & (group>0)].groupby(group).first().tolist()

# assign flag
df.loc[idx, 'flag'] = 'X'

输出:

       A      B flag
0  False   True  NaN
1   True  False  NaN
2  False  False  NaN
3  False  False  NaN
4  False   True  NaN
5  False   True  NaN
6   True  False    X
7   True  False  NaN
8  False  False  NaN
9   True  False    X

中间体:

       A      B     m1     m2  group flag
0  False   True  False  False      0     
1   True  False  False   True      0     
2  False  False   True  False      1     
3  False  False   True  False      2     
4  False   True  False  False      2     
5  False   True  False  False      2     
6   True  False  False   True      2    X
7   True  False  False   True      2     
8  False  False   True  False      3     
9   True  False  False   True      3    X

Python相关问答推荐

比较2 PD.数组的令人惊讶的结果

try 在树叶 map 上应用覆盖磁贴

如何记录脚本输出

在线条上绘制表面

通过pandas向每个非空单元格添加子字符串

ODE集成中如何终止solve_ivp的无限运行

如何获得每个组的时间戳差异?

如何将多进程池声明为变量并将其导入到另一个Python文件

python中的解释会在后台调用函数吗?

使用Python从URL下载Excel文件

Python列表不会在条件while循环中正确随机化'

让函数调用方程

循环浏览每个客户记录,以获取他们来自的第一个/最后一个渠道

Odoo16:模板中使用的docs变量在哪里定义?

如何训练每一个pandaprame行的线性回归并生成斜率

read_csv分隔符正在创建无关的空列

Pythonquests.get(Url)返回Colab中的空内容

Django抛出重复的键值违反唯一约束错误

我怎样才能让深度测试在OpenGL中使用Python和PyGame呢?

函数()参数';代码';必须是代码而不是字符串