【Python】多列去重

test.CSV原数据展示:

当ncrna_nameh和drug_name一样时,删除多余的重复项,只保留其中一行即可

代码实现:

import pandas as pd 
df = pd.read_csv('test.CSV',sep=',',header='infer',usecols=['ncrna_name','drug_name'])#参数sep=','表示使用逗号作为字段分隔符,header='infer'表示自动推断文件中的列名,使用usecol读取指定两列数据

# df.head()

# print(df.shape)
#df[['merchant_r', 'merchant_l']]:从df中取出待组合删重的两列。

#apply(frozenset, axis=1):把取出两列中的行当做变量依次传到frozenset函数中去。

#frozenset:冻结集合,不可变,存在哈希值。经过这个函数就可以解决两行中值的顺序不一致问题。因为集合是无序的,只要值相同不用考虑顺序。

#duplicated():判断变成冻结集合的列是否存在重复值,若存在标记为True。

~:取反操作,把FALSE变成True,True变成False。相当于保留第一行,把其余重复行删除。

df_final = df[~df[['ncrna_name','drug_name']].apply(frozenset, axis=1).duplicated()]

print(df_final.shape)

df_final

效果如图,可以和原文件比对一下已经删除掉多余的重复值:

 

参考文档:

【Python】基于多列组合删除数据框中的重复值-腾讯云开发者社区-腾讯云

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值