<p>您需要的基本上是两个不同的<code>duplicated()</code>调用的<code>AND</code></p>
<ol>
<li><p><code>~df_so.duplicated()</code>组内交易</p>
</li>
<li><p><code>df_so.drop_duplicates().duplicated(subset='letter',keep=False).fillna(True)</code>忽略当前组重复项的组间交易</p>
</li>
</ol>
<p>代码:</p>
<pre><code>import pandas as pd
data_so = { 'ID': [100, 100, 100, 200, 200, 300, 300, 300], 'letter': ['A','B','A','C','D','E','D','A'], }
df_so = pd.DataFrame (data_so, columns = ['ID', 'letter'])
df_so['dup'] = ~df_so.duplicated() & df_so.drop_duplicates().duplicated(subset='letter',keep=False).fillna(True)
print(df_so)
</code></pre>
<p>输出:</p>
<pre><code> ID letter dup
0 100 A True
1 100 B False
2 100 A False
3 200 C False
4 200 D True
5 300 E False
6 300 D True
7 300 A True
</code></pre>
<p>其他情况:</p>
<pre><code>data_so = { 'ID': [100, 100, 100, 200, 200, 300, 300], 'letter': ['A','B','A','C','D','E','D'] }
</code></pre>
<p>输出:</p>
<pre><code> ID letter dup
0 100 A False
1 100 B False
2 100 A False
3 200 C False
4 200 D True
5 300 E False
6 300 D True
</code></pre>