python - 计算列中 bool 值从 True 变为 False 的次数

标签 python pandas series

我在数据框中有一列,其中填充了 bool 值,我想计算它从 True 变为 False 的次数。

当我将 bool 值转换为 1 和 0 时,我可以这样做,然后使用 df.diff 然后将该答案除以 2

import pandas as pd

d = {'Col1': [True, True, True, False, False, False, True, True, True, True, False, False, False, True, True, False, False, True, ]}


df = pd.DataFrame(data=d)


print(df)

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

我的预期结果是 出现 False 的次数是 3

最佳答案

您可以执行 bitwise and Col1 的一个掩码,指示连续行中发生更改的位置:

(df.Col1 & (df.Col1 != df.Col1.shift(1))).sum()
3

掩码是通过将 Col1 与其自身的移位版本 ( pd.shift ) 进行比较获得的:

df.Col1 != df.Col1.shift(1)

0      True
1     False
2     False
3      True
4     False
5     False
6      True
7     False
8     False
9     False
10     True
11    False
12    False
13     True
14    False
15    False
16    False
17    False
Name: Col1, dtype: bool

对于多列,你可以做完全相同的事情(这里我测试了一个与col1相同的col2)

(df & (df != df.shift(1))).sum()

Col1    3
Col2    3
dtype: int64

关于python - 计算列中 bool 值从 True 变为 False 的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54219948/

相关文章:

python - django:实例化 AdminSite 更改未反射(reflect)出来

python - 从 Pandas Dataframe 列中提取字符串形式的 JSON 对象列表

matlab - 查找相同值的系列

python - 如何将键映射到多个值到数据框列?

wpf - 可以按字母顺序排列 Oxyplot 图表图例中的系列吗?

python - Django 字符串换行

Python 正则表达式 - 使用先前匹配的字符来匹配字符序列

python - 如何检索传递给函数调用的关键字参数的原始顺序?

python - Pandas 数据框中的矢量化字符串操作

python - 如何直接从 pandas 包导入 Dataframe 类