итерация по мультииндексу - объект groupby.value_counts () работает только через значения, а не через исходный индекс даты - PullRequest
0 голосов
/ 16 июня 2019

Я хочу знать процент мужчин в ER (отделение неотложной помощи) в дни, которые я определил как в переполненные дни.

У меня есть DF по имени eda со строками, представляющими каждую запись в ER.В определенном столбце указано, произошла ли запись в переполненный день (1 означает переполненный день), а в определенном столбце указан пол человека, который вошел.

До сих пор мне удалось получить серию переполненных дней.в качестве индекса и субиндекса, представляющего пол и количество записей в этом поле.

я использовал этот код:

eda[eda.over_crowd==1].groupby(eda[eda.over_crowd==1].index.date).gender.value_counts()

и получил следующий результат: image of my resulting grouper series

Мой вопрос заключается в том, какой самый «пандасианский» способ получить процент мужчин / женщин в целом.или, как продолжить с точки, в которой я остановился?

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

1 Ответ

0 голосов
/ 16 июня 2019

я нашел довольно элегантное решение.Я уверен, что есть еще, но, возможно, это может помочь кому-то еще.

, поэтому я определил многоиндексный ряд со всеми датами и количеством женщин и мужчин.затем использовал .loc для обработки каждого подсчета всех дат, чтобы получить процент мужчин в каждый день.наконец, я просто извлекаю только те дни, которые применяются для over_crowd == 1.

temp=eda.groupby(eda.index.date).gender.value_counts()
crowding['male_percent']=np.divide(100*temp.loc[:,1],temp.loc[:,2]+temp.loc[:,1])
crowding.male_percent[crowding.over_crowd==1]
...