вырезать фрейм данных по столбцу с несколькими типами данных и сгруппировать его в pandas python

#python #python-3.x #pandas #dataframe

#python #python-3.x #pandas #фрейм данных

Вопрос:

У меня есть фрейм данных, и я пытаюсь выполнить следующий запрос:

сколько приложений в каждой группе: суперлегкий (<2 МБ) легкий (2 МБ; 30 МБ) объемный (> 30 МБ) и «зависит от устройства»

Мой фрейм данных выглядит примерно так:

 app                                               category         rating  reviews   size  installs    type  price  content-rating  genres           last-updated  current-ver  android-ver 
🔥 Football Wallpapers 4K 😍                      ENTERTAINMENT    4.7     11661.0   4.0   1000000.0   Free  0.0    Everyone        Entertainment    2018-07-14    1.1.3.2      4.0.3 and up
Dr Driving Racer                                  GAME             4.3     183.0     68    10000.0     Free  0.0    Everyone        Racing           2018-06-14    2.1          4.1 and up
Dr. B.R.Ambedkar                                  SOCIAL           4.8     1902.0    5.2   100000.0    Free  0.0    Everyone        Social           2014-06-05    1.3          2.1 and up
Dr. Battery - Fast Charger - Super Cleaner 2018   TOOLS            4.5     101738.0  10    1000000.0   Free  0.0    Everyone        Tools            2018-07-26    2.2.82       4.0 and up
Dr. Booster - Boost Game Speed                    TOOLS            4.4     138872.0  22    10000000.0  Free  0.0    Everyone        Tools            2018-05-15    2.0.1077     4.1 and up
                                                                                                                                                                                            
...
Next Launcher 3D Theme Hit-G                      PERSONALIZATION  4.2     59.0      8.1   1000.0      Paid  1.7    Everyone        Personalization  2015-08-16    1.05         2.2 and up
Next Launcher 3D Theme Stun-BW                    PERSONALIZATION  4.4     2839.0    5.1   100000.0    Free  0.0    Everyone        Personalization  2014-01-11    1.00         2.2 and up
Nextdoor - Local neighborhood news amp; classifieds  SOCIAL           4.3     51502.0   20    5000000.0   Free  0.0    Teen            Social           2018-07-25    2.69         5.0 and up
Niche: College, K-12, and Neighborhood Search     LIFESTYLE        4.0     42.0      26    5000.0      Free  0.0    Everyone        Lifestyle        2018-07-06    1.0.1        4.4 and up
 Download 4 Instagram Twitter                     SOCIAL           4.5     40467.0   Varies with device    1000000.0   Free  0.0    Everyone        Social           2018-08-02    5.03         4.1 and up
Length: 7935, dtype: int64
  

Решением должен быть pandas.Series фрейм данных or, который выглядит следующим образом

 ranges            count
(0, 2]              43
(2, 30]             ...
(30, 10000]
varies_on_device    12
  

Проблема в том, что я не знаю, как использовать pandas.cut с объектами, обычно массив bins — это числа, которые определяют диапазоны.

Мой подход заключался в:

  1. выньте элемент из группы «зависит от устройства»
  2. удалите их из основного фрейма данных
  3. позже преобразуйте все элементы размера в float
  4. создайте группу, используя диапазоны cut и bins
  5. наконец, объединить два фрейма данных

но я думаю, что это не самый оптимизированный и быстрый способ … надеюсь, это понятно

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

1. Я думаю, что ваш подход хорош. В противном случае вы можете использовать этот трюк: — заменить Зависит от устройства на -1 -> преобразовать в число с плавающей запятой -> вырезать gruopby -> заменить Зависит от устройства обратно

2. @rpanai ваше решение кажется приятным, попробую, спасибо!