У меня есть фрейм данных (edata), как указано ниже
Domestic Catsize Type Count
1 0 1 1
1 1 1 8
1 0 2 11
0 1 3 14
1 1 4 21
0 1 4 31
На этом кадре данных я хочу вычислить сумму всех подсчетов, в которых логическое И обеих переменных (Внутренний и Размер) приводит к нулю (0), так что
1 0 0
0 1 0
0 0 0
Код, который я использую для выполнения процесса:
g=edata.groupby('Type')
q3=g.apply(lambda x:x[((x['Domestic']==0) & (x['Catsize']==0) |
(x['Domestic']==0) & (x['Catsize']==1) |
(x['Domestic']==1) & (x['Catsize']==0)
)]
['Count'].sum()
)
q3
Type
1 1
2 11
3 14
4 31
Этот код работает нормально, однако, если количество переменных в кадре данных увеличивается, то число условий быстро растет. Итак, есть ли умный способ написать условие, которое гласит, что если AND, в котором две (или более) переменные приводят к нулю, тогда выполнить функцию sum ()