Группировать по вычислению с условием

#python #python-3.x #pandas

#python #python-3.x #панды

Вопрос:

У меня есть df ниже как

Пример df:

 City   | Name | Purchase
Texas    Bob      0 
Texas    Ken      4
Florida  Ben      1
Texas    Red      18
Florida  Ken      55
Florida  Ted      0
 

Как я могу рассчитать%, в котором в каждом городе есть человек с 3 или более покупками / все люди в этом городе?

Таким образом, формулой будут люди с покупками 3 / все люди в этом городе

Ожидаемый результат:

 City   |  %
Texas    .67
Florida  .33
 

Спасибо!

Ответ №1:

Вы можете использовать mean условие, чтобы найти этот процент, а также объединить с groupby для вычисления для каждого города

 df['Purchase'].ge(3).groupby(df['City']).mean()
 

Вывод:

 City
Florida    0.333333
Texas      0.666667
Name: Purchase, dtype: float64
 

Комментарии:

1. Спасибо, что делает функция ge?

2. @Chris90 это сокращение для greater than or equal to , то же самое с df['Purchase'] >=3 .

3. Я просто работал над этим сам — но далеко не так просто. Хороший ответ.

4. Спасибо @QuangHoang