回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试使用列表理解(包含字符串)在数据框中派生一个新列。我不知道我做错了什么,但无法找出我的代码中的错误</p>
<p>我有一个清单如下</p>
<pre><code>
buyout_deals = ['BIMBO', 'EBO', 'IBI', 'IBO', 'MBI', 'MBO', 'Secondary buyout', 'Take Private']
</code></pre>
<p>我正在尝试使用上面的列表和一个名为Deal\u Type的列在我的数据帧中派生一个新的列,该列包含用','分隔的字符串</p>
<pre><code>Announced_Date Deal_Nature Deal_Type
0 2019-05-14 Recommended Acquisition,Cross border,Private
1 2019-05-14 Recommended Acquisition,Buy & Build,Domestic,Private
2 2019-05-14 Recommended Acquisition,Domestic,Insolvency,Private
3 2019-05-14 Recommended Acquisition,Domestic,Private
4 2019-05-14 Recommended Acquisition,Buy & Build,Cross border,Private,T...
5 2019-05-14 Recommended Acquisition,Domestic,IBO,Private
6 2019-05-14 Recommended Acquisition,Cross border,Private,Transatlantic
7 2019-05-14 Recommended Acquisition,Domestic,MBO,Private
8 2019-05-14 Recommended Acquisition,Domestic,Exit,MBO,Private,Secondar...
9 2019-05-14 Recommended Acquisition,Cross border,Divestment,Private
</code></pre>
<p>我正在尝试在“交易类型”列的“买断交易”列表中查找任何1个关键字。如果包含,则新列将显示为“买断”,否则显示为“非买断”</p>
<p>下面是我尝试过的函数(和许多其他方法),但我无法得到想要的结果</p>
<pre class="lang-py prettyprint-override"><code>def buyout_nonbuyout(row):
if row['Deal_Type'] in buyout_deals:
return 'Buyout'
else:
return 'Non-Buyout'
df = df.assign(Buyout_NonBuyout=df.apply(buyout_nonbuyout, axis=1))
df.head(10)
</code></pre>
<p>我得到以下输出</p>
<p><a href="https://i.stack.imgur.com/INKGQ.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/INKGQ.png" alt="enter image description here"/></a></p>
<p>索引5、7和8处的行应该是Buyout而不是Non-Buyout,因为它至少包含Buyout\u deals列表中的一个关键字</p>
<p>预期结果:</p>
<p><a href="https://i.stack.imgur.com/Py8P9.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Py8P9.png" alt="enter image description here"/></a></p>
<p>谁能帮我一下吗?我也尝试过for循环,但没有得到正确的结果。
谢谢</p>