Сгрупировать значения и сделать из них столбці
Есть массив 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