python - 通过条件值识别连续的单元格

标签 python pandas

我想知道如何在下面的数据框上创建一个额外的列,当年龄列上有 3 个或更多连续值大于 35 时,该列将为 1

数据

age
0   12
1   50
2   49
3   29
4   55
5   34
6   23
7   46
8   87
9   39

期望的输出:

   age  flag
0   12     0
1   50     0
2   49     0
3   29     0
4   55     0
5   34     0
6   23     0
7   46     1
8   87     1
9   39     1

我该怎么做?谢谢

最佳答案

首先比较 Series.gt 的值对于 >,然后使用 cumsum 通过 shift 创建连续的组,最后按组分组并使用 GroupBy.transform 获取计数- 比较 Series.ge并与原始 s 链接以防止设置 3 个连续的 >35 值,最后将 True/False 的值设置为 1/0 映射:

s = df['age'].gt(35)
g = s.ne(s.shift()).cumsum()

df['flag'] = (s.groupby(g).transform('size').ge(3) & s).astype(int)
print (df)
   age  flag
0   12     0
1   50     0
2   49     0
3   29     0
4   55     0
5   34     0
6   23     0
7   46     1
8   87     1
9   39     1

关于python - 通过条件值识别连续的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55574017/

相关文章:

python - numpy.genfromtxt 与 datetime.strptime 转换器

python - matplotlib 将带有 stddev 轴的正态分布叠加到另一个图上

python - Pandas 数据框按日期移动列

python - 在 Pandas 的两列中按名称拆分和附加

python - Pandas TimeGrouper 按列

python - 使用 Cython 重载 Python 数学函数

python - 如何在 jinja 模板中列出可用参数

python - 在一次更新中在 pandas 数据框中创建多个列

python 3 pip 安装非 ASCII 负载错误

python - sqlalchemy 获取同义词和关系的字段类型