Создание булевой матрицы из одного столбца с пандами

Я искал ответ, но я не знаю, что искать, поэтому я спрошу здесь. Я начинающий любитель питонов и панд.

У меня есть набор данных, где я хотел бы получить матрицу из столбца. Матрица должна иметь значение 1, если значение в столбце и его транспонированное состояние равно, и 0, если это не так.

вход:

  id x1
   A  1
   B  3
   C  1
   D  5

выход:

  A  B  C  D

A 1  0  1  0

B 0  1  0  0

C 1  0  1  0

D 0  0  0  1

Я хотел бы сделать это для шести различных столбцов и добавить полученные матрицы в одну матрицу, где значения варьируются от 0 до 6, а не от 0 до 1.

1 ответ

Решение

Частично из-за того, что пока нет удобного декартового объединения (свистит и отводит взгляд), я склоняюсь к низкому уровню и использую вещание, когда мне нужно сделать что-то подобное. IOW, потому что мы можем делать такие вещи

>>> df.x1.values - df.x1.values[:,None]
array([[ 0,  2,  0,  4],
       [-2,  0, -2,  2],
       [ 0,  2,  0,  4],
       [-4, -2, -4,  0]])

Мы можем

>>> pdf = pd.DataFrame(index=df.id.values, columns=df.id.values, 
                       data=(df.x1.values == df.x1.values[:,None]).astype(int))
>>> pdf
   A  B  C  D
A  1  0  1  0
B  0  1  0  0
C  1  0  1  0
D  0  0  0  1
Другие вопросы по тегам