You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中用首次出现的Title值标记重复行?

解决方案

你可以通过分组提取首个title结合条件赋值来实现需求,以下是完整代码和步骤说明:

完整实现代码

import pandas as pd

# 初始化DataFrame
df = pd.DataFrame({'title': [1, 2, 3, 4, 5, 6, 7, 8],
                   'val1': [1.1, 1.1, 2.1, 8.8, 1.1, 1.1, 8.8, 8.8],
                   'val2': [2.2, 3.3, 5.5, 6.2, 2.2, 3.3, 6.2, 6.2],
                   'val3': [3.4, 4.4, 5.5, 8.4, 0.5, 3.4, 1.9, 3.7]
                   })

# 先标记所有重复行(你已完成的步骤)
df['duplicate'] = df.duplicated(keep=False, subset=['val1', 'val2'])

# 核心步骤:生成first_occurence列
# 1. 按val1、val2分组,提取每组首个title并广播到组内所有行
first_title = df.groupby(['val1', 'val2'])['title'].transform('first')
# 2. 生成初始标记值(格式为titleX)
df['first_occurence'] = 'title' + first_title.astype(str)
# 3. 替换首次出现的行为True,非重复行为False
is_first_in_group = ~df.duplicated(subset=['val1', 'val2'], keep='first')
df.loc[is_first_in_group, 'first_occurence'] = True
df.loc[~df['duplicate'], 'first_occurence'] = False

# 查看目标结果列
print(df[['title', 'val1', 'val2', 'first_occurence']])

执行结果

title  val1  val2 first_occurence
0      1   1.1   2.2            True
1      2   1.1   3.3            True
2      3   2.1   5.5           False
3      4   8.8   6.2            True
4      5   1.1   2.2          title1
5      6   1.1   3.3          title2
6      7   8.8   6.2          title4
7      8   8.8   6.2          title4

关键步骤解释

  1. 分组提取首个title:groupby.transform('first')会为每个(val1, val2)组合的所有行,返回该组第一行的title值,确保重复组内的所有行都能关联到首次出现的title。
  2. 格式转换:将首个title拼接成titleX的字符串格式,作为重复行的标记内容。
  3. 条件替换:
    • ~df.duplicated(..., keep='first')筛选出每组的第一行,将其标记为True
    • ~df['duplicate']筛选出无重复的行,将其标记为False

内容的提问来源于stack exchange,提问作者nsog8sm43x

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 16:05:26