繁体   English   中英

对具有相同条件的列组合中的行进行计数

[英]Counting rows in a column combination with the same condition

我想做的有点复杂,我很挣扎。 从这些数据中,我想得到 Y1、Y2 和 Y3 的计数,它们的(值 A 和值 C)都等于 1。值 A 和值 B 也都 = 1。

Name |     Value A | Value B | Value C |

 Y1           1          0          0 
 Y1           1          0          0
 Y1           1          1          0 
 Y2           1          0          1
 Y2           0          1          0
 Y2           1          0          1
 Y3           1          0          0  
 Y3           1          1          0
 Y3           1          0          1

我想要的 output 是:

Name   (Value A=1 and C=1)  (Value A=1 and B=1)
Y1         0                        1
Y2         2                        0
Y3         1                        1

我只能用“groupby”和“sum”将它们单独分组,并且所有值都等于 1。但我不能进行组合。

您可以创建满足条件的groupby列并按这些列分组,并使用sum来查找总计数:

out = (df.assign(A_C_eq_1=(df['Value_A'].eq(1) & df['Value_C'].eq(1)), 
                 A_B_eq_1=(df['Value_A'].eq(1) & df['Value_B'].eq(1)))
       .groupby('Name')[['A_C_eq_1', 'A_B_eq_1']]).sum().reset_index()

Output:

  Name  A_C_eq_1  A_B_eq_1
0   Y1         0         1
1   Y2         2         0
2   Y3         1         1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM