pandas如何实现:保留name列重复行,清空同组Count列后续重复值
Pandas分组保留首值、同组后续值置空实现方案
核心实现逻辑
全程保留所有原始行,不删除任何数据,仅按name列分组后对Count列做处理:仅每组第一行的Count值保留,其余行的Count全部置为空值,完全匹配需求示例的输出效果。
可复现代码
首先构造和示例一致的输入DataFrame:
import pandas as pd # 构造示例输入数据 df = pd.DataFrame({ 'Count': ['yes', 'yes', 'yes', 'yes', 'yes', 'yes'], 'name': ['jhon', 'marry', 'marry', 'ishita', 'ishita', 'ishita'] })
核心处理代码:
# 按name分组,标记每组首行,非首行的Count值置空 # 加sort=False避免不必要的组排序,不影响组内行顺序判断 first_row_mask = df.groupby('name', sort=False).cumcount() == 0 df.loc[~first_row_mask, 'Count'] = None
查看处理后的结果:
print(df)
输出效果和需求示例完全一致:
Count name 0 yes jhon 1 yes marry 2 None marry 3 yes ishita 4 None ishita 5 None ishita
拓展场景适配
如果需求是组内仅对重复出现的Count值置空,同组内第一次出现的不同Count值仍保留(比如同name下Count依次为yes、yes、no、no时,输出为yes、空、no、空),可以改用以下代码:
# 按name分组,标记组内首次出现的Count值,重复出现的置空 first_count_mask = df.duplicated(subset=['name', 'Count'], keep='first') df.loc[first_count_mask, 'Count'] = None
注意事项
- 处理过程完全保留原始行顺序,不会打乱数据排列
- name列的所有值和所有行都会被完整保留,不会出现行删除的情况
- 空值默认会在输出表格中显示为空白,和需求示例的展示效果一致
内容的提问来源于stack exchange,提问作者Priya Chauhan
相关产品推荐
相关产品推荐

