Считайте, если с 2 условиями - Python - PullRequest
3 голосов
/ 28 мая 2020

У меня проблемы с решением этого вопроса, поэтому я пришел сюда за вашей помощью.

У меня есть фрейм данных с множеством столбцов, и я хочу подсчитать, сколько ячеек определенного c столбца соответствует условию другого столбца. В Excel это будет count.if, но я не могу понять это точно для моей проблемы. Приведу пример.

Names    Detail

John      B
John      B
John      S
Martin    S
Martin    B
Robert    S

В этом df, например, всего 3 «B» и 3 «S».

Как я могу узнать, сколько «B» и «S» есть для каждого имени в столбце A?

Я пытаюсь получить фрейм данных результата, например

         B      S
John     2      1
Martin   1      1
Robert   0      1

Я попробовал

b_var = sum(1 for i in df['Names'] if i == 'John') 
s_var = sum(1 for k in df['Detail'] if k == 'B')

, а затем сделал для? но я не знаю, как выполнять оба условия одновременно, или лучше использовать групповой подход?

Спасибо !!

1 Ответ

1 голос
/ 28 мая 2020
df.pivot_table(index='Names', columns='Detail', aggfunc=len)
...