GroupBy и вырезать в пандах - PullRequest
0 голосов
/ 09 мая 2018

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

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

Country     Value
Uganda       210
Kenya        423
Kenya        315 
Tanzania     780 
Uganda       124
Uganda       213
Tanzania     978 
Kenya        524 

Я ожидаю, в каком диапазоне каждое значение падает, выше или ниже среднего значения:

Country      Value        Range
Uganda        210        (168.5, 213)
Uganda        124        (124, 168.5)
Uganda        213        (168.5, 213)
Kenya         423        (419.5, 524)
Kenya         315        (315, 419.5)
Kenya         524        (419.5, 524)
Tanzania      780        (780, 879)
Tanzania      978        (879, 980) 

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

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Вот как я это сделал:

df['range'] = df.groupby('country')[['value']].transform(lambda x: pd.cut(x, bins = 2).astype(str))
0 голосов
/ 09 мая 2018

Попробуйте это;

data['Range'] = data.groupby('Country').Value.apply(pd.cut, bins=2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...