为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas 删除重复的行,包括索引

Pandas 删除重复的行,包括索引

幕布斯7119047 2023-03-30 17:12:29
我知道如何根据列数据删除重复行。我也知道如何根据行索引删除重复的行。我的问题是:有没有办法根据索引和一列删除重复的行?
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

这可以通过将索引变成列来完成。


下面是一个示例数据集(仅供参考,我认为有人否决了您的问题,因为它不包含示例数据集):


df=pd.DataFrame({'a':[1,2,2,3,4,4,5], 'b':[2,2,2,3,4,5,5]}, index=[0,1,1,2,3,5,5])

输出:


   a  b

0  1  2

1  2  2

1  2  2

2  3  3

3  4  4

5  4  5

5  5  5

然后您可以使用以下行。第一个 reset_index() 创建一个带有索引号的新列。然后,您可以根据新索引列和另一列(在本例中为 b)删除重复项。之后,您可以使用 set_index('index') 将索引设置为原始索引值:


df.reset_index().drop_duplicates(subset=['index','b']).set_index('index')

输出:


       a  b

index      

0      1  2

1      2  2

2      3  3

3      4  4

5      4  5


查看完整回答
反对 回复 2023-03-30
?
九州编程

TA贡献1785条经验 获得超4个赞

您可以使用 pandas 的.duplicated()方法而不是.drop_duplicates().


如果您关心索引和某些列中的重复项,您可以分别用 和b标识相应的索引。使用运算符组合这些,然后使用 a 取反该交集,您会得到类似df.index.duplicated()df.duplicated(subset="b")&~


clean_df = df[~(df.index.duplicated() & df.duplicated(subset="b"))]

print(clean_df)

输出:


   a  b

0  1  2

1  2  2

2  3  3

3  4  4

5  4  5


查看完整回答
反对 回复 2023-03-30
  • 2 回答
  • 0 关注
  • 196 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信