У меня есть a df
, который выглядит следующим образом:
code y_m has_id
1000 201701 True
1000 201701 False
1000 201702 True
1000 201702 True
2000 201701 True
2000 201701 False
2000 201702 False
2000 201702 False
2000 201702 True
Я сначала сгруппировал code
и y_m
, чтобы вычислить процент значений True
в каждой группе,
df.groupby(['code', 'y_m'])['has_id'].apply(lambda x: np.sum(x) / len(x)).reset_index(name='pct_with_id')
и затем я также хочу получить матрицу типа
0 1 2 3
0 -1 0 201701 201702
1 0 0.56 0.5 0.6
2 1000 0.75 0.5 1.0
3 2000 0.4 0.5 0.33
-1 представляет собой фиктивное значение, которое указывает, что либо значение не существует для конкретной ячейки кода / y_m, либо для поддержки матрицыформы;0
представляет процент True
для всех code
или y_m
или code
и y_m
, например, ячейка (1,1)
- это процент True
для всех строк в df
;(1,2)
- это процент True
для 201701
в 1000
и 2000
в df
.
. Можно ли использовать pivot_table
для достижения этой цели?