Python 通过条件值标识连续单元格
我想知道如何在下面的数据框中创建一个额外的列,当年龄列中有3个或更多大于35的连续值时,该列将为1 资料 期望输出:Python 通过条件值标识连续单元格,python,pandas,Python,Pandas,我想知道如何在下面的数据框中创建一个额外的列,当年龄列中有3个或更多大于35的连续值时,该列将为1 资料 期望输出: 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 我怎么能这么做?谢谢首先比较的值,然后通过shift和cumsum创建连续组,最后按组分组,并
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
我怎么能这么做?谢谢首先比较
的值,然后通过shift
和cumsum
创建连续组,最后按组分组,并通过-比较和链与原始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
还有一个问题,如果我有一个小时(%Y%M%D%H%M%S)的指数,我想在2个CNCs的日子里得到1个WHER年龄>35?(考虑索引日期增加了1H?)CAPI-是否可能产生新的问题?因为不容易回答没有数据。
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