Как рассчитать последовательное изменение значения на ноль в столбце python - PullRequest
0 голосов
/ 04 февраля 2020

из кадра данных хотите проверить, сколько раз значение меняется на ноль в столбцах.

здесь вводится df

pd.DataFrame({'value1':[3,4,7,0,11,20,0,20,15,16],
             'value2':[2,2,0,8,8,2,2,2,5,5],
             'value3':[7,10,20,4008,0,1,4820,1,1,1]})
 value1  value2  value3
0       3       2       7
1       4       2      10
2       7       0      20
3       0       8    4008
4      11       8       0
5      20       2       1
6       0       2    4820
7      20       2       1
8      15       5       1
9      16       5       1

желаемый вывод:

df_out=pd.DataFrame({'value1_count':[2],
             'value2_count':[1],
             'value3_ount':[1]})
 value1_count  value2_count  value3_ount
0             2             1            1

Ответы [ 3 ]

3 голосов
/ 04 февраля 2020

Попробуйте это

df.eq(0).astype(int).diff().eq(-1).sum()

Out[77]:
value1    2
value2    1
value3    1
dtype: int64

Чтобы получить точный результат, просто добавьте следующее

df.eq(0).astype(int).diff().eq(-1).sum().to_frame().T.add_suffix('_count')

Out[85]:
   value1_count  value2_count  value3_count
0             2             1             1
0 голосов
/ 04 февраля 2020
>>> columns_name = ['value1_count','value2_count','value3_ount']
>>> df_out = pd.DataFrame((df==0).sum().values.reshape(1,-1), columns=columns_name )
>>> df_out
   value1_count  value2_count  value3_ount
0             2             1            1
0 голосов
/ 04 февраля 2020

Вот что вы можете сделать

df_out=pd.DataFrame({'value1_count':[df['value1'].value_counts()[0]],'value2_count':[df['value2'].value_counts()[0]],'value3_count':[df['value3'].value_counts()[0]]})

Выходные данные

    value1_count    value2_count    value3_count
0         2              1               1

.value_counts () возвращает объект pandas .Series с частотой всех значений, индекс равен Значение. Таким образом, в индексе [0] вы найдете частоту нулей в столбце.

...