Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过条件值标识连续单元格_Python_Pandas - Fatal编程技术网

Python 通过条件值标识连续单元格

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创建连续组,最后按组分组,并

我想知道如何在下面的数据框中创建一个额外的列,当年龄列中有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
创建连续组,最后按组分组,并通过-比较和链与原始
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