在Pandas 数据框中,我试图计算True连续出现的次数.

(例如:True、True、True表示连续出现两次)

输入:

df = pd.DataFrame({"A": [False, False, True, True, False, True, False, False, False, False, True, True, True, True, False, True, True, True]})

输出:

6

我真的不知道如何解决这个问题.

推荐答案

这里有一种方法:

grp = (~df['A']).cumsum()
df['A'].groupby(grp).sum().sub(1).clip(0,).sum()

输出:

6

使用对FALSE值累加创建所有TRUE值的分组,然后将每个组中的TRUE值相加减go 1作为定义组的第一个FALSE.使用CLIP删除没有True的组,并对这些值求和.


下面是通过数据帧列分步骤分解的另一种方法.

df['B'] = (~df['A']).cumsum()
df['C'] = df.duplicated(['A', 'B'], keep='first')
df['C'].sum()

输出:

6

详细输出:

        A  B      C
0   False  1  False
1   False  2  False
2    True  2  False
3    True  2   True
4   False  3  False
5    True  3  False
6   False  4  False
7   False  5  False
8   False  6  False
9   False  7  False
10   True  7  False
11   True  7   True
12   True  7   True
13   True  7   True
14  False  8  False
15   True  8  False
16   True  8   True
17   True  8   True

Python-3.x相关问答推荐

如何有效地计算Kernel/Matrix

将字符串转换为python日期时间时出错

根据另一列中的条件填写该列中的值

无法使用Python发送带有参数和标头的POST请求

根据第一个字典的值序列对第二个字典进行排序

将列表转换为 pandas 数据框,其中列表包含字典

如何定义部署用 Python 编写的 Firestore 第二代函数的区域/位置?

错误:无法为 pyconcorde 构建轮子,这是安装基于 pyproject.toml 的项目所必需的

如何查找以开头并替换的字符串

为什么不能用格式字符串 '-' 绘制点?

Pandas 按值和索引对 DF 进行排序

python 3.10.5 中可能存在的错误. id 函数工作不明确

使用 pandas 进行多类分类的总体准确度

Python过滤器函数 - 单个结果

使用 Sympy 方程进行绘图

try 在 Windows 10 高 DPI 显示器上解决模糊的 tkinter 文本 + zoom ,但担心我的方法不是 Pythonic 或不安全

python setup.py egg_info mysqlclient

将字符串拆分为最大长度 X 的片段 - 仅在空格处拆分

有没有一种标准方法来确保 python 脚本将由 python2 而不是 python3 解释?

python中的绝对导入是什么?