pandas列数据唯一值替换df.replace

现在有这样一个需求,一列数据是节点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)
这个地方注意,我新建了一列LN_channels[‘node0_id’]复制了LN_channels[‘node0’]重新编号,如果你不想保留原来的值,可以直接在对应列操作,inplace=True即可。最后的效果看最开始的前两张图就可以了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值