Сгрупировать значения и сделать из них столбці

Есть массив pandas:

   NAME 2  time_d     rating
0       x   433.0     90-600
2       x   425.0     90-600
4       x     6.0       6-30
7       x  -206.0  Not_Rated
18      y   433.0     90-600
20      y   425.0     90-600
22      y     6.0       6-30
25      y  -206.0  Not_Rated
34      z   433.0     90-600
36      z   425.0     90-600
38      z     6.0       6-30
40      z  -206.0  Not_Rated
48      m   433.0     90-600
50      m    14.0       6-30
53      m  -206.0  Not_Rated

Как сгрупировать строки так чтобы получить таблицу:

Name 2 0-6 6-30 30-90 90-600 Not_Rated
x if rating =='0-6':count(x); else(0) if rating =='6-30':count(x); else(0) .... ..... .....
y if rating =='0-6':count(y); else(0) if rating =='6-30':count(y); else(0) .... ..... .....

Ответы (1 шт):

Автор решения: Алексей Р
target_cols = ['0-6', '6-30', '30-90', '90-600', 'Not_Rated']
df = df.pivot_table(index='NAME 2', columns='rating', values='time_d', aggfunc='count')
df = df.assign(**{k: 0 for k in set(target_cols).difference(df.columns)})[target_cols]
print(df)
rating  0-6  6-30  30-90  90-600  Not_Rated
NAME 2                                     
m         0     1      0       1          1
x         0     1      0       2          1
y         0     1      0       2          1
z         0     1      0       2          1
→ Ссылка