如何基于“年份创建”“周数创建”两列删除重复分组数据?
解决方法
你的数据集里Year created和Week created的重复行对应的汇总列(SUM_New、SUM_Closed、SUM_Open)值已经完全一致,所以不需要再做分组聚合,直接对这两列去重就能得到唯一的分组数据。
正确代码
你可以使用drop_duplicates()方法,指定去重的列,同时选择保留每组的第一行或最后一行:
# 保留每组的第一行(对应你示例中的索引0行) df_cleaned = df.drop_duplicates(subset=['Year created', 'Week created'], keep='first') # 如果想保留每组的最后一行(对应你示例中的索引4行) df_cleaned = df.drop_duplicates(subset=['Year created', 'Week created'], keep='last')
为什么之前的方法不适用?
你用的df.groupby(['Year created', 'Week created']).size()只是统计每个分组的行数,返回的是一个仅包含计数的Series,不会保留原数据中的汇总列信息,所以无法满足你的需求。而你的数据已经是汇总好的,同一分组的所有行的SUM列值都相同,直接去重是最直接高效的方式。
输入输出示例
- 原始数据:
Year created Week created SUM_New SUM_Closed SUM_Open 0 2018 1 17 0 82 1 2018 6 62 47 18 2 2018 6 62 47 18 3 2018 6 62 47 18 4 2018 6 62 47 18
- 使用
keep='last'后的结果:
Year created Week created SUM_New SUM_Closed SUM_Open 0 2018 1 17 0 82 4 2018 6 62 47 18
内容的提问来源于stack exchange,提问作者user21
相关产品推荐
相关产品推荐

