删除具有不同值的重复行

时间:2019-02-06 11:59:20

标签: python pandas pandas-groupby

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

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的系列。

没主意吗?

谢谢

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

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