Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 3.x 当值从大于阈值的值更改为0时,如何计数行_Python 3.x_Pandas_Numpy - Fatal编程技术网

Python 3.x 当值从大于阈值的值更改为0时,如何计数行

Python 3.x 当值从大于阈值的值更改为0时,如何计数行,python-3.x,pandas,numpy,Python 3.x,Pandas,Numpy,数据帧中有三列,X1 X2 X3,当值从大于1的值更改为0时,我想计算行数。如果0之前的值小于1,则不需要计数 输入df: df1=pd.DataFrame({'x1':[3,4,7,0,0,0,0,20,15,16,0,0,70], 'X2':[3,4,7,0,0,0,0,20,15,16,0,0,70], 'X3':[6,3,0.5,0,0,0,0,20,15,16,0,0,70]}) print(df1) x1 X2

数据帧中有三列,X1 X2 X3,当值从大于1的值更改为0时,我想计算行数。如果0之前的值小于1,则不需要计数

输入df:

df1=pd.DataFrame({'x1':[3,4,7,0,0,0,0,20,15,16,0,0,70],
             'X2':[3,4,7,0,0,0,0,20,15,16,0,0,70],
             'X3':[6,3,0.5,0,0,0,0,20,15,16,0,0,70]})

print(df1)



    x1  X2    X3
0    3   3   6.0
1    4   4   3.0
2    7   7   0.5
3    0   0   0.0
4    0   0   0.0
5    0   0   0.0
6    0   0   0.0
7   20  20  20.0
8   15  15  15.0
9   16  16  16.0
10   0   0   0.0
11   0   0   0.0
12  70  70  70.0
期望输出

   x1_count  X2_count  X3_count
0         6         6         2

想法是将
0
替换为缺少的值,向前填充它们,将所有其他值转换为
NaN
s,比较更大的值,如
1
,并通过
sum
Series
进行计数,转换为一行
DataFrame
,使用转置:

m = df1.eq(0)

df2 = (df1.mask(m)
          .ffill()
          .where(m)
          .gt(1)
          .sum()
          .add_suffix('_count')
          .to_frame()
          .T
          )
print (df2)
   x1_count  X2_count  X3_count
0         6         6         2