删除具有一个不同值的重复行[重复]

Posted

技术标签:

【中文标题】删除具有一个不同值的重复行[重复]【英文标题】:Remove duplicate rows with one different value [duplicate] 【发布时间】:2019-06-30 09:05:14 【问题描述】:

我有一个数据框,其中除了一个值之外有重复的行。我想过滤掉它们,只保留值较高的行。

User_ID - Skill - Year_used
1 - skill_a - 2017
1 - skill_b - 2015
1 - skill_a - 2018
2 - skill_c - 2011

等等

因此,例如需要比较具有 Skill_a 和相同 User_ID 的行,并且只保留最近年份的行。

transform.('count')

仅按 User_ID 为我提供组的行数。

value_counts()

只给我一个无法合并回df的系列。

没有想法?

谢谢

【问题讨论】:

df.drop_duplicates(subset=['User_ID,'Skill'],keep='last') - 这行得通吗? 【参考方案1】:

一种选择是groupby Skill 并保留max Year_used

df.groupby(['User_ID','Skill']).Year_used.max().reset_index()

     User_ID    Skill  Year_used
0        1  skill_a       2018
1        1  skill_b       2015
2        2  skill_c       2011

【讨论】:

【参考方案2】:

您可以使用drop_duplicates,通过对列进行排序来保留max

df = df.sort_values('Year_used').drop_duplicates(['User_ID','Skill'], keep='last')

【讨论】:

以上是关于删除具有一个不同值的重复行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

基于具有列表值的多列删除数据框中的重复行[重复]

MYSQL - 将具有多个重复值的行组合起来,然后删除重复项

查找指定列的重复行[重复]

如何根据两列删除所有重复行?

从不同的相关记录组中选择两列之一中包含重复值的所有行

SQL选择一列中具有重复值的所有行