擅长:python、mysql、java
<p>您的解决方案实际上需要使用<code>groupby</code>和<code>nunique</code>:</p>
<pre><code>df[df.groupby('name')['ear'].transform('nunique') == df['ear'].nunique()]
name ear
0 Lisa Right
1 Lisa Left
</code></pre>
<p>你可以简化这个假设人类只能有两只耳朵;)</p>
<pre><code>df[df.groupby('name')['ear'].transform('nunique').eq(2)]
name ear
0 Lisa Right
1 Lisa Left
</code></pre>
<hr/>
<p><strong>细节</strong><br/>
<code>groupby</code>将计算与名称相关的(唯一)ear条目数:</p>
<pre><code>df.groupby('name')['ear'].transform('nunique')
0 2
1 2
2 1
3 1
Name: ear, dtype: int64
</code></pre>
<p>(前两行属于Lisa。)结果广播到原始帧。你知道吗</p>
<p>然后检查哪些行的唯一计数为2,并相应地选择。你知道吗</p>