我想知道如何在下面的数据框上创建一个额外的列,当年龄列上有 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/