как считать строки, когда значение изменяется от значения, превышающего порог, до 0 - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть три столбца в кадре данных, X1 X2 X3, я хочу подсчитать строки, когда значение изменяется со значения больше 1 на 0. если до 0 значение меньше 1 не нужно считать.

input 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

1 Ответ

1 голос
/ 20 февраля 2020

Идея состоит в том, чтобы заменить 0 пропущенными значениями, заполнить их вперёд, преобразовать все остальные значения в NaN s, сравнить больше, например 1, и считать True s на 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...