Создайте двоичную матрицу из 2 столбцов данных в Python - PullRequest
0 голосов
/ 25 мая 2018

Мне нужно создать двоичную матрицу

Пример данных в панде DataFrame

ID P
2  1
1  2
3  2
1  3
1  4
2  5
3  5

Использование

A = pd.DataFrame(index=df.ID.values, columns=df.P.values, 
                       data=(df.P.values == df.P.values[:,None]).astype(int))

Мой текущий вывод

Current Output

Это правильно с точки зрения того, где ударил «1», но я просто хочу объединить номера столбцов / строк и номера строк в порядке, как в:

index 1 2 3 4 5 6 7
1     0 1 1 1 0 1 0
2     1 0 0 0 1 0 1
3     0 1 0 1 1 1 0

Если это не ясно, не стесняйтесь задавать вопросы!

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Вы можете попробовать функцию сводной таблицы

df["value"]=1
pd.pivot_table(df, values="value", index=["ID"], columns="P", fill_value=0) 
0 голосов
/ 25 мая 2018

Использование get_dumies с max:

df = pd.get_dummies(df.set_index('ID')['P'].astype(str)).max(level=0).sort_index()
print (df)
    1  2  3  4  5
ID               
1   0  1  1  1  0
2   1  0  0  0  1
3   0  1  0  0  1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...