当前位置: 代码网 > it编程>前端脚本>Python > pandas的drop_duplicates无法去重问题解决

pandas的drop_duplicates无法去重问题解决

2024年05月18日 Python 我要评论
之前没研究过pandas的去重方法,今天用了一下,发现这个方法并不是那么好用,我的需求是去除所有列的重复值,并保留第一个重复的值,按我的想法应该是下面这样写import pandas as pdimp

之前没研究过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无法去重内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com