我需要创建一个二进制矩阵
pandas 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))
我当前的输出
哪个' 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
如果不清楚,请随时提问!
答案 0 :(得分:1)
将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
答案 1 :(得分:0)
您可以尝试pivot_table function
{{1}}