pandas的drop_duplicates无法去重问题解决

2024-04-18 0 760

之前没研究过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 c0 1.0 3 42 NaN 4 53 1.0 4 54 4.0 5 65 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 c0 1.0 3 41 4.0 4 52 5.0 5 63 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无法去重内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

您可能感兴趣的文章:

  • Pandas去除重复项函数详解drop_duplicates()
  • Pandas之使用drop_duplicates:去除重复项
  • Pandas中的drop_duplicates()详解
  • pandas重复行删除操作df.drop_duplicates和df.duplicated的区别
  • Python Pandas中DataFrame.drop_duplicates()删除重复值详解
  • pandas.DataFrame.drop_duplicates 用法介绍
  • 详解pandas使用drop_duplicates去除DataFrame重复项参数
  • Pandas之drop_duplicates:去除重复项方法

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Python pandas的drop_duplicates无法去重问题解决 https://www.u-9.cn/jiaoben/python/186772.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务