擅长:python、mysql、java
<p>使用<strong><code>str.contains</code></strong>和布尔掩码:</p>
<pre><code>df[~df['ID'].isin(df.loc[df.TrumpAdj.str.contains('Moron'), 'ID'].unique())]
ID % TrumpAdj
1 xyz987 0.870 Loser
5 lmn789 0.837 Senile
6 lmn789 0.856 OppositeofObama
7 lmn789 0.813 Embarrassing
</code></pre>
<p>解释</p>
<p>首先,查找包含单词<code>'Moron'</code>的列:</p>
<pre><code>df.TrumpAdj.str.contains('Moron')
0 True
1 False
2 False
3 False
4 True
5 False
6 False
7 False
Name: TrumpAdj, dtype: bool
</code></pre>
<p>然后,找到唯一的<code>ID</code>,它们的形容词包含<code>Moron</code>:</p>
<pre><code>df.loc[df.TrumpAdj.str.contains('Moron'), 'ID'].unique()
# array(['abc123', 'hij456'], dtype=object)
</code></pre>
<p>最后,找到在我们刚刚创建的列表中<code>'ID'</code>不是</em>的所有行:</p>
<pre><code>df[~df['ID'].isin(df.loc[df.TrumpAdj.str.contains('Moron'), 'ID'].unique())]
</code></pre>
<p>这给了我们想要的结果</p>