#python #pandas #dataframe
Вопрос:
У меня есть фрейм данных (назовем его 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). Кто-нибудь знает, как это сделать, пожалуйста?
Ответ №1:
Попробуй:
x = df.loc[
df.Country.eq("UK") amp; df.Type.isin(["A", "B", "C"]) amp; df.Cancelled.eq("N")
]
print(len(x))
С принтами:
3
Шаг за шагом:
- Создайте маску:
mask = (
df.Country.eq("UK") amp; df.Type.isin(["A", "B", "C"]) amp;
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') amp;amp; (df.Type in ['A','B','C']) amp;amp; (df.Cancelled=='N')])