You need to enable JavaScript to run this app. pandas如何实现:保留name列重复行,清空同组Count列后续重复值
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 06:36:03