Условный подсчет для групповых переменных - PullRequest
0 голосов
/ 05 сентября 2018

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

import pandas as pd
df = pd.DataFrame({"Shop_type": [1,2,3,3,2,3,1,2,1],
               "Self_managed" :     [True,False,False,True,True,False,False,True,False],
               "Support_required" : [True,True,True,False,False,False,False,False,True]})

Моя цель - получить представление о количестве магазинов Self_managed и Support_required, которые выглядят примерно так:

  Shop_type  Self_count  Supprt_count
0          1           1             2
1          2           2             1
2          3           1             1

В настоящее время я использую следующий код для достижения этой цели, но он выглядит очень длинным и непрофессиональным. Так как я все еще изучаю Python, я хотел бы улучшить и иметь более эффективный код. Есть идеи?

df1 = df[df["Self_managed"] == True]
df1 = df1.groupby(['Shop_type']).size().reset_index(name='Self_count')
df2 = df[df["Support_required"] == True]
df2 = df2.groupby(['Shop_type']).size().reset_index(name='Supprt_count')
df = df1.merge(df2, how = "outer", on="Shop_type")

1 Ответ

0 голосов
/ 05 сентября 2018

Похоже, вам нужно

df.groupby('Shop_type',as_index=False).sum()
Out[298]: 
   Shop_type  Self_managed  Support_required
0          1           1.0               2.0
1          2           2.0               1.0
2          3           1.0               1.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...