当前位置: 首页 > 知识库问答 >
问题:

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

袁晋鹏
2023-03-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')

仅按用户ID提供组的行数。

value_counts()

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

反对的想法?

谢谢你

共有2个答案

章德惠
2023-03-14

一种选择是按分组技能并保留最大值使用年份

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

薛滨海
2023-03-14

通过对列进行排序以保留最大值,可以使用drop\u duplicates

df = df.sort_values('Year_used').drop_duplicates(['User_ID','Skill'], keep='last')
 类似资料:
  • 问题内容: 我必须清理具有重复行的表: 一个可能具有多个值: 我想对整个表执行一个查询,并删除和重复的所有行。在上面的示例中,删除后,我只想剩下1、2、4和5。 问题答案: ;WITH x AS ( SELECT id, gid, url, rn = ROW_NUMBER() OVER (PARTITION BY gid, url ORDER BY id) FROM dbo.table ) SEL

  • 我想通过删除所有具有相同值的行,但无法获取。

  • 我想删除a列和b列中的空值行。我已设法找到具有以下内容的行: 如何删除这些行?

  • 但是它并不像预期的那样工作,因为它将删除所有重复的行。 我想这样做的原因是与另一个数据集联接,而不是在同一个键组有多个名称时从该数据集添加信息

  • 问题内容: 我有三列的表:,和 有重复的字段。我想删除所有具有相同的行为别人 ,除了 对最近更新的一个。 因此,如果表包含这些行: 然后,我只想保留这些行: 您如何在SQL中做到这一点?我想象会从具有重复值的行中删除单个random(?)行,但是如何使其除最近更新的行之外的 所有 行删除呢? 问题答案: 您可以使用左联接来执行此操作: 这意味着对于每一行,它会寻找更新日期最近的另一行,如果有更新日

  • 我有一个数据集,如下所示: