从Python中的2个数据帧列创建二进制矩阵

时间:2018-05-25 09:28:16

标签: python pandas dataframe matrix

我需要创建一个二进制矩阵

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))

我当前的输出

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 :(得分:1)

get_dumiesmax

一起使用
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}}