【Python】DataFrame通过两列查重,删除重复值,保留第一个出现的值或者最后一个出现的值。

DataFrame通过两列查重,删除重复值,保留第一个出现的值或者最后一个出现的值:

import pandas as pd

# 创建示例DataFrame
data = {'A': ['abc', 'def', 'abc', 'ghi', 'def'],
        'B': ['123', '456', '123', '789', '456'],
        'C': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)

# 创建新列,表示A和B的组合
df['A_and_B'] = df[['A', 'B']].apply(lambda x: '_'.join(x), axis=1)

# 标记重复行,保留最后一个重复行
df['is_duplicate'] = df.duplicated(subset='A_and_B', keep='last')

# 筛选需要保留的行
df_unique = df[~df['is_duplicate']]

# 删除辅助列
df_unique = df_unique.drop(['A_and_B', 'is_duplicate'], axis=1)

# 打印结果
print(df_unique)

如果保留第一个出现的行,keep='first'

输出结果:

     A    B  C
2  abc  123  3
3  ghi  789  4
4  def  456  5

这段代码的功能是根据'A'和'B'列的组合判断重复行,并保留最后一个重复行,同时删除辅助列,最终输出筛选后的结果。

逐行解释这段代码:

  1. 首先导入了pandas库,然后创建了一个示例的DataFrame,其中包含三列数据'A'、'B'和'C'。

  2. 接下来,通过使用apply方法和lambda函数,将'A'和'B'列的值合并为一个新列'A_and_B'。apply方法可以对DataFrame的列进行逐行操作,而lambda函数用于将每一行的'A'和'B'值连接起来,并使用下划线分隔。

  3. 使用duplicated方法标记重复行,并通过设置keep='last'参数来保留最后一个重复行。这将在DataFrame中创建一个名为'is_duplicate'的列,标记了每行是否为重复行,最后一个重复行将被标记为True,其他重复行将被标记为False

  4. 使用布尔索引筛选出不是重复行的行,即选取'is_duplicate'列为False的行,将结果赋值给变量'df_unique'。这样就得到了保留最后一个重复行的DataFrame。

  5. 最后,使用drop方法删除辅助列'A_and_B'和'is_duplicate',并将最终结果存储在'df_unique'中。

  6. 最后一行代码打印输出了筛选后的结果。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值