如何计算数据框中满足多个条件的行数?

SRJ*_*ing 4 python dataframe pandas

我有一个数据框(我们称之为 df),看起来有点像这样。

Offer | Country | Type | Cancelled
------|---------|------|----------
111   | UK      | A    | N
222   | UK      | A    | Y
333   | UK      | B    | N
444   | UK      | C    | N
555   | UK      | D    | N
666   | UK      | E    | N 
777   | ROI     | A    | N

 
Run Code Online (Sandbox Code Playgroud)

我想要一个变量来保存属于 A、B 或 C 类型且尚未取消的所有英国优惠的计数。因此,对于上面的数据,变量将设置为 3(即报价 111、333 和 444)。请问有人知道该怎么做吗?

And*_*ely 6

尝试:

x = df.loc[
    df.Country.eq("UK") & df.Type.isin(["A", "B", "C"]) & df.Cancelled.eq("N")
]
print(len(x))
Run Code Online (Sandbox Code Playgroud)

印刷:

3
Run Code Online (Sandbox Code Playgroud)

一步步:

  1. 创建蒙版:
3
Run Code Online (Sandbox Code Playgroud)
  1. .loc与以下一起使用mask
mask = (
    df.Country.eq("UK") & df.Type.isin(["A", "B", "C"]) & 
df.Cancelled.eq("N")
)


0     True
1    False
2     True
3     True
4    False
5    False
dtype: bool
Run Code Online (Sandbox Code Playgroud)
  1. 使用len()
x = df.loc[mask]


   Offer Country Type Cancelled
0    111      UK    A         N
2    333      UK    B         N
3    444      UK    C         N
Run Code Online (Sandbox Code Playgroud)

或者:对掩码求和:

print(len(x))
Run Code Online (Sandbox Code Playgroud)

印刷:

3
Run Code Online (Sandbox Code Playgroud)