<p>这里有两种可能的方法-通过<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.isin.html" rel="nofollow noreferrer">^{<cd1>}</a>测试值以获得成员资格,然后通过<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.groupby.GroupBy.transform.html" rel="nofollow noreferrer">^{<cd3>}</a>和<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.groupby.GroupBy.all.html" rel="nofollow noreferrer">^{<cd4>}</a>获得所有具有所有<code>True</code>的组,最后通过<a href="http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#boolean-indexing" rel="nofollow noreferrer">^{<cd5>}</a>过滤:</p>
<pre><code>df1 = df[df['col1'].isin([3,4]).groupby(df['groups']).transform('all')]
print (df1)
groups col1
4 B 3
5 B 3
6 B 4
8 D 4
9 D 3
</code></pre>
<p>另一种方法是首先获取所有组的值,其中<code>NOT</code>包含值<code>3,4</code>,然后传递给另一个带反转掩码的<code>isin</code>函数:</p>
<pre><code>df1 = df[~df['groups'].isin(df.loc[~df['col1'].isin([3,4]), 'groups'])]
print (df1)
groups col1
4 B 3
5 B 3
6 B 4
8 D 4
9 D 3
</code></pre>