Используйте pd.crosstab
для кросс-таблицы подсчета:
pd.crosstab(pd.cut(df['CPB%'], bins=bins), df.Bin)
Пример использования pd.qcut
(не путать с pd.cut
) с ячейками в качестве квантилей:
pd.crosstab(pd.qcut(df['CPB%'], 4), df.Bin)
Bin A B
CPB%
(0.00622, 0.00899] 0 7
(0.00899, 0.0103] 5 1
(0.0103, 0.0114] 6 0
(0.0114, 0.019] 6 0
Если вы хотите использовать левую часть интервала в качестве метки индекса, вы можете сделать что-то вроде
import operator
pd.crosstab(pd.qcut(df['CPB%'], 4).map(operator.attrgetter('left')), df.Bin)
# On v0.24,
# pd.crosstab(pd.qcut(df['CPB%'], 4).arrays.left, df.Bin)
Bin A B
CPB%
0.00622 0 7
0.00899 5 1
0.01030 6 0
0.01140 6 0