我有一个重复行的数据框,除了一个值。我想过滤掉它们,只保留较高的值。
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的系列。
没主意吗?
谢谢
答案 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')