2016-02-22 3 views
1

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

Age Sex 
23  Male 
34  Female 
38  Female 
32  Male 
33  Female 
20  Male 
34  Male 

Мне нужно сгруппировать его и пластинчатый его так, что он выглядит как этот

Age  Male Female 
21 - 25  2  0 
26 - 30  0  0 
31 - 35  2  2 
36 - 40  0  1 

Как я могу сделать это Панда?

ответ

1

Вы можете сделать это следующим образом.

Start, установив 'count' столбец 1:

df['count'] = 1 

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

df['age_group'] = pd.cut(df.Age, [20, 31, 36]) 

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

>>> df.pivot_table('count', index='age_group', columns='Sex', aggfunc='sum') 
Sex Female Male 
age_group  
(20, 31] NaN 1 
(31, 36] 2 2 

Если вы хотите, вы можете дополнительно изменить NaN с с fillna:

>>> df.pivot_table('count', index='age_group', columns='Sex', aggfunc='sum').fillna(0) 
    Sex Female Male 
age_group  
(20, 31] 0 1 
(31, 36] 2 2 
+0

спасибо это работает. – Amani

+0

Добро пожаловать. –

Смежные вопросы