Создание булевой матрицы из одного столбца с пандами
Я искал ответ, но я не знаю, что искать, поэтому я спрошу здесь. Я начинающий любитель питонов и панд.
У меня есть набор данных, где я хотел бы получить матрицу из столбца. Матрица должна иметь значение 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