【问题标题】:How to count rows in a dataframe that satisfy multiple conditions?如何计算满足多个条件的数据框中的行?
【发布时间】:2021-06-24 17:51:07
【问题描述】:
我有一个看起来有点像这样的数据框(我们称之为 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
我想获得一个变量来保存所有属于 A、B 或 C 类型且尚未取消的英国优惠的计数。因此,对于上面的数据,变量将设置为 3(即提供 111、333 和 444)。请问有人知道怎么做吗?
【问题讨论】:
标签:
python
pandas
dataframe
【解决方案1】:
试试:
x = df.loc[
df.Country.eq("UK") & df.Type.isin(["A", "B", "C"]) & df.Cancelled.eq("N")
]
print(len(x))
打印:
3
一步一步:
- 创建蒙版:
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
- 将
.loc 与mask 一起使用:
x = df.loc[mask]
Offer Country Type Cancelled
0 111 UK A N
2 333 UK B N
3 444 UK C N
- 使用
len():
print(len(x))
或者:对掩码求和:
print(mask.sum())
打印:
3
【解决方案2】:
一行:
my_count =len(df[(df.Country=='UK') && (df.Type in ['A','B','C']) && (df.Cancelled=='N')])