Подсчет чисел в каждой строке с помощью python

#python #pandas #python-2.7

#python #pandas #python-2.7

Вопрос:

У меня есть фрейм данных pandas:

 a   b   c   d
./. 0/1 ./. 0/1
0/1 1/1 0/0 1/1
0/1 1/1 ./. 1/1
 

Я хочу знать, как я могу получить общее количество «0» и «1» в каждой строке так же, как:

 a   b   c   d   C0  C1
./. 0/1 ./. 0/1 2   2
0/1 1/1 0/0 1/1 3   5
0/1 1/1 ./. 1/1 1   5
 

Ответ №1:

Давайте .stack изменим форму фрейма данных, затем используем .str.extractall для извлечения всех групп захвата в regex шаблоне в виде столбцов, наконец, используйте .notna .sum on level=0 для подсчета количества 0's и 1's :

 df[['c0', 'c1']] = df.stack().str.extractall(r'(0)|(1)').notna().sum(level=0)
 

      a    b    c    d  c0  c1
0  ./.  0/1  ./.  0/1   2   2
1  0/1  1/1  0/0  1/1   3   5
2  0/1  1/1  ./.  1/1   1   5