在Python中保留二进制矩阵中的值的顺序

时间:2018-06-15 10:18:14

标签: python pandas matrix

我从2个pandas列

创建了一个二进制矩阵

DF:

ID_2  ID_1
1111  1
22222 2
33333 3
33333 4
44444 5
55555 6
55555 7
66666 8
66666 9
77777 10
77777 11
77777 12

使用:

A = pd.get_dummies(df.set_index('ID_1')['ID_2'].astype(str)).max(level=0)
print (A)

这会创建一个矩阵:

      22222 33333 44444 55555 66666 77777 11111
ID_2
1     0     0     0     0     0     0     1
2     1     0     0     0     0     0     0
3     0     1     0     0     0     0     0
4     0     1     0     0     0     0     0
5     0     0     1     0     0     0     0

...

一切都很好 - 除了ID_1的第一个唯一值放在最后一列。我需要保留值的顺序,如ID_2中那样。

1 个答案:

答案 0 :(得分:1)

如果你想重新排序列,我认为你需要这个:

A = A.reindex_axis(['11111'] + list(A.columns[:-1]), axis=1)

修改

你可以这样做:

 from collections import OrderedDict
 cols = list(OrderedDict.fromkeys(list(df['ID_2'].values)))
 cols = [str(i) for i in cols]
 A = A.reindex_axis(cols, axis=1)

这里你以有序的方式保留列的元素(并且没有重复),然后将它们用作标题