<p>给定<code>pd.DataFrame</code>{<cd2>}:</p>
<pre><code>df = pd.DataFrame({'id' : [1,1,1,2,2,3,3,4],
'documentno' : ['1281261658','1281261658','1281261658','0105162445','0105162445','0100848728','0100848728','0106075074'],
'quantity' : [3,3,3,2,2,2,2,1],
'producttype' : ['accesories','major','accesories','major','major','major','accesories','major']})
</code></pre>
<p>请尝试以下操作:</p>
<p><code>df.loc[df.documentno.isin(df.documentno[df.producttype.eq('accesories')].unique()),:]</code></p>
<p>结果是:</p>
<pre><code> id documentno quantity producttype
0 1 1281261658 3 accesories
1 1 1281261658 3 major
2 1 1281261658 3 accesories
5 3 0100848728 2 major
6 3 0100848728 2 accesories
</code></pre>
<p>使用<code>df.documentno[df.producttype.eq('accesories')]</code>作为过滤器,它返回具有一个或多个<code>accesories</code>的<code>documentno</code>值。
我假设数据集<code>df</code>中的<code>quantity</code>总是大于0</p>
<p>但是,如果<code>quantity</code>可能为零:</p>
<pre><code>df = pd.DataFrame({'id' : [1,1,1,2,2,3,3,4],
'documentno' : ['1281261658','1281261658','1281261658','0105162445','0105162445','0100848728','0100848728','0106075074'],
'quantity' : [3,3,3,2,2,2,0,1],
'producttype' : ['accesories','major','accesories','major','major','major','accesories','major']})
</code></pre>
<p>只需添加条件<code>df.quantity.gt(0)</code>:</p>
<pre><code>df.loc[ df.documentno.isin(df.documentno[(df.producttype.eq('accesories') & df.quantity.gt(0))].unique()) ,:]
</code></pre>