#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