将多个二进制列转换为交叉表

Convert multiple binary columns into crosstab

我正在尝试将以下具有多个二进制变量的数据集转换为交叉表。

df = pd.DataFrame({'colour_blue': [1, 0, 1], 'colour_green': [0, 1, 1],
                   'colour_red': [1, 1, 0], 'emotion_happy': [1, 1, 1],'emotion_angry': [0, 1, 1], 'emotion_sad': [0, 0, 1]})

进入以下交叉表,但我运气不好

emotion blue green red
happy 2 2 2
angry 1 2 1
sad 1 1 0

这是矩阵乘法:

df.filter(like='emotion').T @ df.filter(like='colour')

输出:

               colour_blue  colour_green  colour_red
emotion_happy            2             2           2
emotion_angry            1             2           1
emotion_sad              1             1           0