Я хотел бы создать сжатую таблицу непредвиденных обстоятельств в пандах.Поэтому я начал с кросс-таблицы Pandas, основанной на кластеризации из определенного столбца в этом примере, столбцы решений - «D», например,
df = pd.DataFrame(np.random.randint(0,2,size=(4, 3)), columns=list('ABD'))
df

Если я хочу сделать кросс-таблицу, я передаю эту команду:
pd.crosstab([df.A,df.B], df.D, margins=True)
Возвращает таблицу частот:

Это немногонеудобно для моего случая.
Я хотел бы сделать это на целом кадре данных, а не столбец за столбцом, как в примере, где я пропустил список столбцов.Кроме того, я хотел бы, чтобы он возвращал его в более сжатой форме, а не на супер огромной частоте, например:

Любая идея, как туда добраться?
Спасибо