python - 在Python中保留二进制矩阵中的值顺序
问题描述
我从 2 个 pandas 列创建了一个二进制矩阵
东风:
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 中保留值的顺序。
解决方案
如果你想重新排序列,我认为你需要这个:
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)
在这里,您以有序的方式(并且没有重复)保留列的元素,然后将它们用作标题
推荐阅读
- c# - 使用通用存储库实体框架核心仅更新一些模型字段
- angular - 每 5 秒订阅一次 observable 并在 Angular 中满足条件时停止
- python - 在python中用逗号替换最后一次但出现的空格
- javascript - Javascript:有什么方法可以检查浏览器缓存中是否存在资产?
- mysql - 用最高记录按子句分组 - MYsql
- c - 不使用 printf 打印新行
- html - 在此全屏视频下制作文字
- html - 在文件目录中搜索匹配字符串,找到时将指定文本附加到末尾
- c - 为什么 C 中结构的大小在通过引用传递时会增加
- c# - 如何从 ac# 控制台应用程序启用 UI 调用?使用 PowerShell 获取凭据