回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我的数据框架如下:</p>
<pre><code>df = pd.DataFrame([['A', 'a', 'web'],
['A', 'b', 'mobile'],
['B', 'c', 'web'],
['C', 'd', 'web'],
['D', 'e', 'mobile'],
['D', 'f', 'web'],
['D', 'g', 'web'],
['D', 'g', 'web']],
columns=['seller_id', 'item_id', 'selling_channel'])
</code></pre>
<p>它显示了已售出的商品,其中包含关于谁是卖家以及用于销售商品的销售渠道(在上面的示例中,可以是网络或移动渠道,但实际数据中有更多潜在渠道)的信息</p>
<p>我想确定哪一个销售渠道是给定销售id的主要渠道,但还有其他限制:</p>
<ol>
<li>如果其中一个渠道用于75%或以上的销售,则该渠道将是主要渠道</li>
<li>如果没有一个通道至少有75%,则主通道的名称应为<code>mixed</code></li>
</ol>
<p>因此,对于上面的输入,我期待以下输出:</p>
<pre><code>df = pd.DataFrame([['A', 'mixed'],
['B', 'web'],
['C', 'web'],
['D', 'web']],
columns=['seller_id', 'main_selling_channel'])
</code></pre>
<p>现在,我正在通过手动迭代每个数据帧的行来构建映射,其中每个卖方id列出了每个通道以及它的出现次数。然后我再次迭代该数据,以确定哪个通道是主通道。但是当我有10k行输入时,这个手动迭代已经花费了很多时间——而实际数据包含数百万条输入</p>
<p>我想知道是否有什么有效的方法可以用pandas api而不是手动迭代</p>