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

如何用Pandas判断DataFrame当前行值是否在之前行出现?

解决方案

根据你的示例输出,实际需求是标记当前值是否为首次出现(即之前未出现过),以下是几种高效实现方式:

方法1:duplicated()取反(最简洁高效)

duplicated()默认会标记重复行(首次出现为False,重复出现为True),取反后正好匹配你的期望:

import pandas as pd

df = pd.DataFrame({'Col1': ['A', 'B', 'A', 'C', 'B']})
df['col2'] = ~df['Col1'].duplicated()

输出结果:

Col1col2
ATrue
BTrue
AFalse
CTrue
BFalse

方法2:groupby+cumcount()

通过分组计数,判断当前行是否为组内第一个元素:

df['col2'] = df.groupby('Col1').cumcount() == 0

逻辑直观,适合需要扩展复杂分组规则的场景,结果与方法1完全一致。

方法3:扩展窗口结合apply(适合理解逻辑,性能略低)

如果想基于扩展窗口实现,可通过apply逐行判断当前值是否在之前的行中出现过:

df['col2'] = df['Col1'].expanding().apply(lambda x: x.iloc[-1] not in x.iloc[:-1])

注:该方法逐行处理,数据量大时性能不如前两种,仅推荐用于学习逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 01:18:26