pandas的drop_duplicates无法去重问题解决

 更新时间:2024年03月28日 11:25:26   作者:羸弱的穷酸书生  
在我们利用Pandas进行数据清洗的时候,往往会用到drop_duplicates()进行去重,本文主要介绍了pandas的drop_duplicates无法去重问题解决,具有一定的参考价值,感兴趣的可以了解一下

之前没研究过pandas的去重方法,今天用了一下,发现这个方法并不是那么好用,我的需求是去除所有列的重复值,并保留第一个重复的值,按我的想法应该是下面这样写

import pandas as pd
import numpy as np

df1 = pd.DataFrame({
    'a':[1,1,float('nan'),1,4,5],
    'b':[3,3,4,4,5,6],
    'c':[4,4,5,5,6,7],
})
df1 = df1.drop_duplicates(keep='first')
df1

但是结果却不尽如人意,

    a    b    c
0    1.0    3    4
2    NaN    4    5
3    1.0    4    5
4    4.0    5    6
5    5.0    6    7

如图所示,并没有删除重复值,所以我只能一个一个列的删,删完在重新拼接在一起,

import pandas as pd
import numpy as np

df1 = pd.DataFrame({
    'a':[1,1,float('nan'),1,4,5],
    'b':[3,3,4,4,5,6],
    'c':[4,4,5,5,6,7],
})

cols = df1.columns.to_list()
series_list = []
for col in cols:
    tmp_s = df1[col].drop_duplicates(keep='first')
    tmp_s = tmp_s.dropna()
    tmp_s = tmp_s.reset_index(drop=True)
    print(tmp_s)
    series_list.append(tmp_s)

new_df = pd.concat(series_list,axis=1)
new_df

结果

     a    b    c
0    1.0    3    4
1    4.0    4    5
2    5.0    5    6
3    NaN    6    7

当然这样数据的索引是无法跟之前的对应起来了,所以我猜pandas是想保留之前的数据的对应关系的,一旦有操作要破坏这种对应,它就不会执行

drop_duplicates()官方的函数说明

解释一下各个参数:

  • subset:表示要去重的列名,默认为 None。

  • keep:有三个可选参数,分别是 first、last、False,默认为 first,表示只保留第一次出现的重复项,删除其余重复项,last 表示只保留最后一次出现的重复项,False 则表示删除所有重复项。

  • inplace:布尔值参数,默认为 False 表示删除重复项后返回一个副本,若为 Ture 则表示直接在原数据上删除重复项,改变了原来的数据框。

  • ignore_index:布尔值参数,默认为False,表示保留原来的行索引,若为True,则表示重新设置行索引。

到此这篇关于pandas的drop_duplicates无法去重问题解决的文章就介绍到这了,更多相关pandas的drop_duplicates无法去重内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Python爬取Json数据的示例代码

    使用Python爬取Json数据的示例代码

    这篇文章主要介绍了使用Python爬取Json数据的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • python报错解决之python运行bat文件的各种问题处理

    python报错解决之python运行bat文件的各种问题处理

    这篇文章主要介绍了python报错解决之python运行bat文件的各种问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python+KgCaptcha实现验证码的开发详解

    Python+KgCaptcha实现验证码的开发详解

    验证码通常是为了区分用户是人还是计算机,也可以防止解开密码等恶意行为,而客户端上多数会用在关键操作上。现在验证码的种类样式也特别多,本文主要介绍了如何用Python和KgCaptcha做出验证码功能,需要的可以参考一下
    2023-04-04
  • python requests.post带head和body的实例

    python requests.post带head和body的实例

    今天小编就为大家分享一篇python requests.post带head和body的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  •  分享Python 中的 7 种交叉验证方法

     分享Python 中的 7 种交叉验证方法

    这篇文章主要给大家分享的是Python 中的 7 种交叉验证方法,交叉验证是一种用于估计机器学习模型性能的统计方法,它是一种评估统计分析结果如何推广到独立数据集的方法,下文相关介绍,需要的朋友可以参考一下
    2022-03-03
  • 利用Python代码实现数据可视化的5种方法详解

    利用Python代码实现数据可视化的5种方法详解

    在数据科学中,有多种工具可以进行可视化。下面这篇文章主要给大家介绍了关于利用Python代码实现数据可视化的5种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2018-03-03
  • 解决Python3 被PHP程序调用执行返回乱码的问题

    解决Python3 被PHP程序调用执行返回乱码的问题

    今天小编就为大家分享一篇解决Python3 被PHP程序调用执行返回乱码的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • python连接池pooledDB源码阅读参数的使用

    python连接池pooledDB源码阅读参数的使用

    这篇文章主要介绍了python连接池pooledDB源码阅读参数的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Python打开文件,将list、numpy数组内容写入txt文件中的方法

    Python打开文件,将list、numpy数组内容写入txt文件中的方法

    今天小编就为大家分享一篇Python打开文件,将list、numpy数组内容写入txt文件中的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • pytorch中的nn.Unfold()函数和fold()函数解读

    pytorch中的nn.Unfold()函数和fold()函数解读

    这篇文章主要介绍了pytorch中的nn.Unfold()函数和fold()函数用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论