现在有这样一个需求,一列数据是节点1,另一列数据是节点2,但是node1和node2的节点的字符串都非常长,不利于处理,现在将其从0开始重新编号,并替换为0开始的索引如下。表名为pandas加载为LN_channels
替换为
具体操作如下,首先将node1和node2的所有编号放在一起
node_list = list(LN_channels['node0'])+list(LN_channels['node1'])
len(set(node_list))
去重后输出为
10644
接着把node_list中的数据去重,但是不可以用set,因为set无序,使用for循环顺序处理
new_node_list = []
for index in node_list:
if index not in new_node_list:
new_node_list.append(index)
print(len(new_node_list))
输出为
10644
可以看出长度相同
接着把去重后的new_node_list编号,直接新建一个list按顺序写入即可
tem_list = []
for i in range(len(new_node_list)):
tem_list.append(i)
len(tem_list)
输出为
10644
保证了数据的对其和唯一性
现在我们有了替换前的new_node_list和替换后的tem_list,使用df.replace即可,如下
LN_channels['node0_id'].replace(new_node_list,tem_list,inplace=True)
LN_channels['node1_id'].replace(new_node_list,tem_list,inplace=True)