【问题标题】:how to count rows when value change from value greater than threshold to 0当值从大于阈值的值变为0时如何计算行数
【发布时间】:2020-02-20 18:26:40
【问题描述】:

我在数据框中有三列,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

desired_output

   x1_count  X2_count  X3_count
0         6         6         2

【问题讨论】:

    标签: python-3.x pandas numpy


    【解决方案1】:

    想法是将0 替换为缺失值,向前填充它们,将所有其他值转换为NaNs,比较像1 这样更大,然后将Trues 通过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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      • 2012-09-26
      相关资源
      最近更新 更多