Кросс-таблица с одинаковыми переменными в строках и столбцах - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть следующий фрейм данных:

       A      B     C
0   True  False  True
1  False   True  True
2   True   True  True
3   True  False  True

Я хочу найти номер каждой комбинации для 'A', 'B' и 'C'. Например, если у меня есть True для 'A' и 'C' в первой, третьей и четвертой строках, число равно 3.

Ожидаемый результат:

   A  B  C
A  3  1  3
B  1  2  2
C  3  2  4

Понятия не имею, как мне этого добиться с Pandas. Может быть, вы также скажете мне, если у этой кросс-таблицы есть специальное имя.

Ответы [ 2 ]

3 голосов
/ 24 февраля 2020

Чтобы добавить к ответу @Andy L., вам не нужно преобразовывать фрейм данных в numpy:

df=df.astype(int)
res=df.T@df

Выходы:

   A  B  C
A  3  1  3
B  1  2  2
C  3  2  4
3 голосов
/ 24 февраля 2020

Попробуйте numpy. Это np.inner

arr = df.astype(int).T.to_numpy()
np.inner(arr, arr)

Out[1158]:
array([[3, 1, 3],
       [1, 2, 2],
       [3, 2, 4]])

df_final = pd.DataFrame(np.inner(arr, arr), columns=df.columns, index=df.columns)

Out[1160]:
   A  B  C
A  3  1  3
B  1  2  2
C  3  2  4
...