Как преобразовать логический фрейм данных pandas в фрейм данных с квадратной матрицей

#python #pandas

Вопрос:

У меня есть такой фрейм данных (логические значения)

 a b c d count 1 0 1 0 196 0 1 0 1 110 0 1 0 0 17 0 0 1 0 10 0 0 0 0 9  

Как вы можете, кто-то может быть a и c // или b и d // или только c Я хочу построить кадр данных с квадратной матрицей, где

 a b  a 0 0 b 0 17 c 196 10 d 0 110   

Могу я получить что-нибудь подобное? Я пытался

 result = df.merge(df, on=['ID'] count = pd.crosstab(df[columns_x],df[columns_y])  

но это не дало того, чего я хотел

Обратите внимание, что основной фрейм данных выглядит следующим образом:

 a b c d  Yes No Yes No  No Yes No Yes  No Yes No No  No No Yes No  No No No No  

Ответ №1:

Я получил ответ, просто создав точечный продукт.

 df_transpose = df.transpose() count = df_transpose.dot(df) gt;   a b c d a 222 5 8 1  b 5 154 14 22  c 8 14 34 6  d 1 22 6 29